@@ -40,6 +40,9 @@ TestMathsCatSnippets = class(TTestCase)
4040 procedure TestMaxOfArray_Single ;
4141 procedure TestMaxOfArray_Double ;
4242 procedure TestMaxOfArray_Extended ;
43+ procedure TestPowNZN ;
44+ procedure TestPowNZZ ;
45+ procedure TestPowN ;
4346 end ;
4447
4548implementation
@@ -530,6 +533,78 @@ procedure TestMathsCatSnippets.TestMinOfArray_Single;
530533 Check(SameValue(N, MinOfArray(A)), ' Test 5' );
531534end ;
532535
536+ procedure TestMathsCatSnippets.TestPowN ;
537+ begin
538+ CheckEquals(0 , PowN(0 , 2 ), ' PowN(0,2)' );
539+ CheckEquals(1 , PowN(42 , 0 ), ' PowN(42,0)' );
540+ CheckEquals(1 , PowN(0 , 0 ), ' PowN(0,0)' );
541+ CheckEquals(1 , PowN(1 , 1 ), ' PowN(1,1)' );
542+ CheckEquals(-1 , PowN(-1 , 1 ), ' PowN(-1,1)' );
543+ CheckEquals(1 , PowN(1 , 5 ), ' PowN(1,5)' );
544+ CheckEquals(4 , PowN(2 , 2 ), ' PowN(2,2)' );
545+ CheckEquals(4 , PowN(-2 , 2 ), ' PowN(-2,2)' );
546+ CheckEquals(100 , PowN(10 , 2 ), ' PowN(10,2)' );
547+ CheckEquals(10000 , PowN(10 , 4 ), ' PowN(10,2)' );
548+ CheckEquals(1.0 , PowN(0 , 0 ), ' PowN(0, 0)' );
549+ CheckEquals(1 /2 , PowN(2 , -1 ), ' PowN(2, -1)' );
550+ CheckEquals(1 /1000 , PowN(10 , -3 ), ' PowN(10, -3)' );
551+ CheckEquals(-1000 , PowN(-10 , 3 ), ' PowN(-10, 3)' );
552+ CheckEquals(-1 /1000 , PowN(-10 , -3 ), ' PowN(-10, -3)' );
553+ CheckEquals(4 , PowN(2 , 2 ), ' PowN(2,2)' );
554+ CheckEquals(4 , PowN(-2 , 2 ), ' PowN(-2,2)' );
555+ CheckEquals(1 /27 , PowN(3 , -3 ), ' PowN(3, -3)' );
556+ CheckEquals(1 /3 , PowN(3 , -1 ), ' PowN(3, -1)' );
557+ CheckEquals(-1 , PowN(-1 , -3 ), ' PowN(-1, -3)' );
558+ CheckEquals(4294967296 , PowN(2 , 32 ), ' PowN(2, 32' );
559+ // Floats
560+ CheckEquals(Math.Power(45.3672 , 3.0 ), PowN(45.3672 , 3 ), ' PowN(45.3672, 12)' );
561+ CheckEquals(Math.Power(-0.87659 , -7 ), PowN(-0.87659 , -7 ), ' PowN(-0.87659, -7)' );
562+ CheckEquals(Math.Power(45.3672 , -3.0 ), PowN(45.3672 , -3 ), ' PowN(45.3672, -3)' );
563+ CheckEquals(Math.Power(-0.87659 , -7 ), PowN(-0.87659 , -7 ), ' PowN(-0.87659, -7)' );
564+ CheckEquals(Math.Power(-0.87659 , 3 ), PowN(-0.87659 , 3 ), ' PowN(-0.87659, 3)' );
565+ end ;
566+
567+ procedure TestMathsCatSnippets.TestPowNZN ;
568+ begin
569+ CheckEquals(0 , PowNZN(0 , 2 ), ' PowNZN(0,2)' );
570+ CheckEquals(1 , PowNZN(42 , 0 ), ' PowNZN(42,0)' );
571+ CheckEquals(1 , PowNZN(0 , 0 ), ' PowNZN(0,0)' );
572+ CheckEquals(1 , PowNZN(1 , 1 ), ' PowNZN(1,1)' );
573+ CheckEquals(-1 , PowNZN(-1 , 1 ), ' PowNZN(-1,1)' );
574+ CheckEquals(1 , PowNZN(1 , 5 ), ' PowNZN(1,5)' );
575+ CheckEquals(4 , PowNZN(2 , 2 ), ' PowNZN(2,2)' );
576+ CheckEquals(4 , PowNZN(-2 , 2 ), ' PowNZN(-2,2)' );
577+ CheckEquals(100 , PowNZN(10 , 2 ), ' PowNZN(10,2)' );
578+ CheckEquals(10000 , PowNZN(10 , 4 ), ' PowNZN(10,2)' );
579+ CheckEquals(-1000 , PowNZN(-10 , 3 ), ' PowNZN(-10,3)' );
580+ CheckEquals(10000 , PowNZN(-10 , 4 ), ' PowNZN(-10,4)' );
581+ end ;
582+
583+ procedure TestMathsCatSnippets.TestPowNZZ ;
584+ begin
585+ CheckEquals(0 , PowNZZ(0 , 2 ), ' PowNZZ(0,2)' );
586+ CheckEquals(1 , PowNZZ(42 , 0 ), ' PowNZZ(42,0)' );
587+ CheckEquals(1 , PowNZZ(0 , 0 ), ' PowNZZ(0,0)' );
588+ CheckEquals(1 , PowNZZ(1 , 1 ), ' PowNZZ(1,1)' );
589+ CheckEquals(-1 , PowNZZ(-1 , 1 ), ' PowNZZ(-1,1)' );
590+ CheckEquals(1 , PowNZZ(1 , 5 ), ' PowNZZ(1,5)' );
591+ CheckEquals(4 , PowNZZ(2 , 2 ), ' PowNZZ(2,2)' );
592+ CheckEquals(4 , PowNZZ(-2 , 2 ), ' PowNZZ(-2,2)' );
593+ CheckEquals(100 , PowNZZ(10 , 2 ), ' PowNZZ(10,2)' );
594+ CheckEquals(10000 , PowNZZ(10 , 4 ), ' PowNZZ(10,2)' );
595+ CheckEquals(1.0 , PowNZZ(0 , 0 ), ' PowNZZ(0, 0)' );
596+ CheckEquals(1 /2 , PowNZZ(2 , -1 ), ' PowNZZ(2, -1)' );
597+ CheckEquals(1 /1000 , PowNZZ(10 , -3 ), ' PowNZZ(10, -3)' );
598+ CheckEquals(-1000 , PowNZZ(-10 , 3 ), ' PowNZZ(-10, 3)' );
599+ CheckEquals(-1 /1000 , PowNZZ(-10 , -3 ), ' PowNZZ(-10, -3)' );
600+ CheckEquals(4 , PowNZZ(2 , 2 ), ' PowNZZ(2,2)' );
601+ CheckEquals(4 , PowNZZ(-2 , 2 ), ' PowNZZ(-2,2)' );
602+ CheckEquals(1 /27 , PowNZZ(3 , -3 ), ' PowNZZ(3, -3)' );
603+ CheckEquals(1 /3 , PowNZZ(3 , -1 ), ' PowNZZ(3, -1)' );
604+ CheckEquals(-1 , PowNZZ(-1 , -3 ), ' PowNZZ(-1, -3)' );
605+ CheckEquals(4294967296 , PowNZZ(2 , 32 ), ' PowNZZ(2, 32' );
606+ end ;
607+
533608procedure TestMathsCatSnippets.TestResizeRect_A ;
534609var
535610 R: Types.TRect;
0 commit comments