MyFractionAlgebra - UnitTest
the following script shows how class
JxnUnitTest
is used to test class
MyFractionAlgebra
= #JxnPortable\docs\programmer_examples\MyFractionAlgebra_UnitTest.jxn
ut = @JxnUnitTest();
!
a = @MyFractionAlgebra( 3, 4 )
b = @MyFractionAlgebra( 2, 5 )
!
ut.assertEquals( 0.75, a.doubleValue() )
ut.assertEquals( 0.4, b.doubleValue() )
!
!
! fraction arithmetic:
!
c = a + b
ut.assertEquals( 23, c.getNumerator() )
ut.assertEquals( 20, c.getDenominator() )
!
c = a - b
ut.assertEquals( 7, c.getNumerator() )
ut.assertEquals( 20, c.getDenominator() )
!
c = a b
ut.assertEquals( 3, c.getNumerator() )
ut.assertEquals( 10, c.getDenominator() )
!
c = a / b
ut.assertEquals( 15, c.getNumerator() )
ut.assertEquals( 8, c.getDenominator() )
!
!
! mixed arithmetic with int or double:
!
c = a + 1
ut.assertEquals( 7, c.getNumerator() )
ut.assertEquals( 4, c.getDenominator() )
!
c = 1. - b
ut.assertEquals( 3, c.getNumerator() )
ut.assertEquals( 5, c.getDenominator() )
!
c = 2 a
ut.assertEquals( 3, c.getNumerator() )
ut.assertEquals( 2, c.getDenominator() )
!
c = a 2.
ut.assertEquals( 3, c.getNumerator() )
ut.assertEquals( 2, c.getDenominator() )
!
c = 2.5 / b
ut.assertEquals( 25, c.getNumerator() )
ut.assertEquals( 4, c.getDenominator() )
!
c = b / 2
ut.assertEquals( 1, c.getNumerator() )
ut.assertEquals( 5, c.getDenominator() )
!
!
! power of fraction:
!
ut.assertEquals( 1., ( a^0 ).doubleValue() )
!
ut.assertEquals( a, a^1 )
!
c = a^3
ut.assertEquals( 27, c.getNumerator() )
ut.assertEquals( 64, c.getDenominator() )
!
c = b^-2
ut.assertEquals( 25, c.getNumerator() )
ut.assertEquals( 4, c.getDenominator() )
!
! ut.assertEquals( a^2, a^2. ) ! automatic cast to int no more supported
expected = "potenz: MyFractionAlgebra^double not supported"
ut.assertException( expected, $this.test "a^2." )
ut.assertException( expected, $this.test "a^2.5" )
!
expected = "MyFractionAlgebra.pow( int ): KmgFormelException: integer overflow ...";
ut.assertException( expected, $this.test "a^20" )
!
!
! determine fraction for a double:
!
pi = @MyFraction( PI )
ut.assertEquals( PI, pi.doubleValue() )
!
!
! mixed array arithmectic:
!
ia = { 2, 3, 5 }
!
ca = ia - b
ut.assertEquals( { 8, 13, 23 }, ca.getNumerator() )
ut.assertEquals( 5, @JxnUnroll ca.getDenominator() )
!
ca = a / ia
ut.assertEquals( { 3, 1, 3 }, ca.getNumerator() )
ut.assertEquals( { 8, 4, 20 }, ca.getDenominator() )
!
!
! check whether inputs a and b have been modified:
!
ut.assertEquals( 3, a.getNumerator() )
ut.assertEquals( 4, a.getDenominator() )
ut.assertEquals( 2, b.getNumerator() )
ut.assertEquals( 5, b.getDenominator() )
!
ut.summary()
JxnUnitTestFailureExpected.summaryAll( true )