@@ -25,25 +25,28 @@ public class FractureTests
2525 public void Fractures ( )
2626 {
2727 var one = new Fraction ( 14 , 2 ) ;
28+ // 14/2 = 7/1
2829 Assert . AreEqual ( 7 , one . Numerator , "Expected numerator to be 7 after simplification." ) ;
2930 Assert . AreEqual ( 1 , one . Denominator , "Expected denominator to be 1 after simplification." ) ;
30- Assert . AreEqual ( 0 , one . Exponent , "Expected exponent to be 0 ." ) ;
31- Assert . AreEqual ( 7 , one . ExponentNumerator , "Expected exponent numerator to be 7 ." ) ;
32- Assert . AreEqual ( 7 , one . Decimal , "Expected decimal value to be 7." ) ;
31+ Assert . AreEqual ( 7 , one . WholePart , "Expected WholePart to be 7 ." ) ;
32+ Assert . AreEqual ( 0 , one . RemainderNumerator , "Expected RemainderNumerator to be 0 ." ) ;
33+ Assert . AreEqual ( 7m , one . ToDecimal ( ) , "Expected decimal value to be 7." ) ;
3334
3435 one = new Fraction ( 14 , 8 ) ;
35- Assert . AreEqual ( 3 , one . Numerator , "Expected numerator to be 3 after simplification." ) ;
36+ // 14/8 = 7/4 (or 1 3/4)
37+ Assert . AreEqual ( 7 , one . Numerator , "Expected numerator to be 7 after simplification." ) ;
3638 Assert . AreEqual ( 4 , one . Denominator , "Expected denominator to be 4." ) ;
37- Assert . AreEqual ( 1 , one . Exponent , "Expected exponent to be 1." ) ;
38- Assert . AreEqual ( 7 , one . ExponentNumerator , "Expected exponent numerator to be 7 ." ) ;
39- Assert . AreEqual ( 1.75m , one . Decimal , "Expected decimal value to be 1.75." ) ;
39+ Assert . AreEqual ( 1 , one . WholePart , "Expected WholePart to be 1." ) ;
40+ Assert . AreEqual ( 3 , one . RemainderNumerator , "Expected RemainderNumerator to be 3 ." ) ;
41+ Assert . AreEqual ( 1.75m , one . ToDecimal ( ) , "Expected decimal value to be 1.75." ) ;
4042
43+ // Mixed Number: 0 1/2
4144 one = new Fraction ( 0 , 1 , 2 ) ;
42- Assert . AreEqual ( 0 , one . Numerator , "Expected numerator to be 0 ." ) ;
43- Assert . AreEqual ( 1 , one . Denominator , "Expected denominator to be 1 ." ) ;
44- Assert . AreEqual ( 0 , one . Exponent , "Expected exponent to be 0." ) ;
45- Assert . AreEqual ( 0 , one . ExponentNumerator , "Expected exponent numerator to be 0 ." ) ;
46- Assert . AreEqual ( 0 , one . Decimal , "Expected decimal value to be 0." ) ;
45+ Assert . AreEqual ( 1 , one . Numerator , "Expected numerator to be 1 ." ) ;
46+ Assert . AreEqual ( 2 , one . Denominator , "Expected denominator to be 2 ." ) ;
47+ Assert . AreEqual ( 0 , one . WholePart , "Expected WholePart to be 0." ) ;
48+ Assert . AreEqual ( 1 , one . RemainderNumerator , "Expected RemainderNumerator to be 1 ." ) ;
49+ Assert . AreEqual ( 0.5m , one . ToDecimal ( ) , "Expected decimal value to be 0.5 ." ) ;
4750 }
4851
4952 /// <summary>
@@ -52,76 +55,76 @@ public void Fractures()
5255 [ TestMethod ]
5356 public void FracturesOperations ( )
5457 {
55- var one = new Fraction ( 1 , 2 , 2 ) ;
56- Assert . AreEqual ( 5 , one . ExponentNumerator , "Expected exponent numerator to be 5." ) ;
57- var two = new Fraction ( 1 , 2 , 2 ) ;
58- Assert . AreEqual ( 5 , two . ExponentNumerator , "Expected exponent numerator to be 5." ) ;
58+ // 2 1/2 = 5/2
59+ var one = new Fraction ( 2 , 1 , 2 ) ;
60+ Assert . AreEqual ( 5 , one . Numerator , "Expected numerator to be 5." ) ;
61+
62+ var two = new Fraction ( 2 , 1 , 2 ) ;
63+ Assert . AreEqual ( 5 , two . Numerator , "Expected numerator to be 5." ) ;
5964
65+ // 5/2 + 5/2 = 10/2 = 5/1
6066 var result = one + two ;
6167 Assert . AreEqual ( 5 , result . Numerator , "Expected numerator to be 5." ) ;
6268 Assert . AreEqual ( 1 , result . Denominator , "Expected denominator to be 1." ) ;
63- Assert . AreEqual ( 0 , result . Exponent , "Expected exponent to be 0 ." ) ;
64- Assert . AreEqual ( 5 , result . ExponentNumerator , "Expected exponent numerator to be 5 ." ) ;
65- Assert . AreEqual ( 5 , result . Decimal , "Expected decimal value to be 5." ) ;
69+ Assert . AreEqual ( 5 , result . WholePart , "Expected WholePart to be 5 ." ) ;
70+ Assert . AreEqual ( 0 , result . RemainderNumerator , "Expected RemainderNumerator to be 0 ." ) ;
71+ Assert . AreEqual ( 5m , result . ToDecimal ( ) , "Expected decimal value to be 5." ) ;
6672
73+ // 5/2 - 5/2 = 0/1
6774 result = one - two ;
6875 Assert . AreEqual ( 0 , result . Numerator , "Expected numerator to be 0." ) ;
69- Assert . AreEqual ( 4 , result . Denominator , "Expected denominator to be 4." ) ;
70- Assert . AreEqual ( 0 , result . Exponent , "Expected exponent to be 0." ) ;
71- Assert . AreEqual ( 0 , result . ExponentNumerator , "Expected exponent numerator to be 0." ) ;
72- Assert . AreEqual ( 0 , result . Decimal , "Expected decimal value to be 0." ) ;
76+ Assert . AreEqual ( 1 , result . Denominator , "Expected denominator to be 1 (simplified)." ) ;
77+ Assert . AreEqual ( 0m , result . ToDecimal ( ) , "Expected decimal value to be 0." ) ;
7378
79+ // 4/2 = 2/1
7480 one = new Fraction ( 4 , 2 ) ;
75- Assert . AreEqual ( 2 , one . ExponentNumerator , "Expected exponent numerator to be 2." ) ;
7681 Assert . AreEqual ( 2 , one . Numerator , "Expected numerator to be 2." ) ;
7782 Assert . AreEqual ( 1 , one . Denominator , "Expected denominator to be 1." ) ;
7883
79- two = new Fraction ( 1 , 1 , 4 ) ;
80- Assert . AreEqual ( 4 , two . ExponentNumerator , "Expected exponent numerator to be 4." ) ;
84+ // Whole number 4 (4/1)
85+ two = new Fraction ( 4 , 0 , 1 ) ;
86+ Assert . AreEqual ( 4 , two . Numerator , "Expected numerator to be 4." ) ;
8187
88+ // 2/1 * 4/1 = 8/1
8289 result = one * two ;
8390 Assert . AreEqual ( 8 , result . Numerator , "Expected numerator to be 8." ) ;
8491 Assert . AreEqual ( 1 , result . Denominator , "Expected denominator to be 1." ) ;
85- Assert . AreEqual ( 0 , result . Exponent , "Expected exponent to be 0." ) ;
86- Assert . AreEqual ( 8 , result . ExponentNumerator , "Expected exponent numerator to be 8." ) ;
87- Assert . AreEqual ( 8 , result . Decimal , "Expected decimal value to be 8." ) ;
92+ Assert . AreEqual ( 8m , result . ToDecimal ( ) , "Expected decimal value to be 8." ) ;
8893
94+ // 2/1 / 4/1 = 2/4 = 1/2
8995 result = one / two ;
9096 Assert . AreEqual ( 1 , result . Numerator , "Expected numerator to be 1." ) ;
9197 Assert . AreEqual ( 2 , result . Denominator , "Expected denominator to be 2." ) ;
92- Assert . AreEqual ( 0 , result . Exponent , "Expected exponent to be 0." ) ;
93- Assert . AreEqual ( 1 , result . ExponentNumerator , "Expected exponent numerator to be 1." ) ;
94- Assert . AreEqual ( 0.5m , result . Decimal , "Expected decimal value to be 0.5." ) ;
98+ Assert . AreEqual ( 0.5m , result . ToDecimal ( ) , "Expected decimal value to be 0.5." ) ;
9599
96100 // Edge case tests
97- one = new Fraction ( 2 , 2 ) ;
98- two = new Fraction ( 1 , 2 , 1 ) ;
101+ one = new Fraction ( 2 , 2 ) ; // 1/1
102+ two = new Fraction ( 1 , 1 , 2 ) ; // 1 1/2 = 3/2
99103
104+ // 1/1 + 3/2 = 5/2
100105 result = one + two ;
101- Assert . AreEqual ( 1 , result . Numerator , "Expected numerator to be 1 ." ) ;
106+ Assert . AreEqual ( 5 , result . Numerator , "Expected numerator to be 5 ." ) ;
102107 Assert . AreEqual ( 2 , result . Denominator , "Expected denominator to be 2." ) ;
103- Assert . AreEqual ( 2 , result . Exponent , "Expected exponent to be 2." ) ;
104- Assert . AreEqual ( 5 , result . ExponentNumerator , "Expected exponent numerator to be 5 ." ) ;
105- Assert . AreEqual ( 2.5m , result . Decimal , "Expected decimal value to be 2.5." ) ;
108+ Assert . AreEqual ( 2 , result . WholePart , "Expected WholePart to be 2." ) ;
109+ Assert . AreEqual ( 1 , result . RemainderNumerator , "Expected RemainderNumerator to be 1 ." ) ;
110+ Assert . AreEqual ( 2.5m , result . ToDecimal ( ) , "Expected decimal value to be 2.5." ) ;
106111
107112 // Negative handling
108- one = new Fraction ( - 1 , 2 ) ;
109- two = new Fraction ( 1 , 2 , - 1 ) ;
110- var three = new Fraction ( 1 , 4 , - 1 ) ;
113+ one = new Fraction ( - 1 , 2 ) ; // -1/2
114+ two = new Fraction ( - 1 , 1 , 2 ) ; // -1 1/2 = -3/2
115+ var three = new Fraction ( - 1 , 1 , 4 ) ; // -1 1/4 = -5/4
111116
117+ // -1/2 * -3/2 = 3/4
112118 result = one * two ;
113119 Assert . AreEqual ( 3 , result . Numerator , "Expected numerator to be 3." ) ;
114120 Assert . AreEqual ( 4 , result . Denominator , "Expected denominator to be 4." ) ;
115- Assert . AreEqual ( 0 , result . Exponent , "Expected exponent to be 0." ) ;
116- Assert . AreEqual ( 3 , result . ExponentNumerator , "Expected exponent numerator to be 3." ) ;
117- Assert . AreEqual ( 0.75m , result . Decimal , "Expected decimal value to be 0.75." ) ;
121+ Assert . AreEqual ( 0.75m , result . ToDecimal ( ) , "Expected decimal value to be 0.75." ) ;
118122
123+ // -1/2 * -5/4 = 5/8
119124 result = one * three ;
120125 Assert . AreEqual ( 5 , result . Numerator , "Expected numerator to be 5." ) ;
121126 Assert . AreEqual ( 8 , result . Denominator , "Expected denominator to be 8." ) ;
122- Assert . AreEqual ( 0 , result . Exponent , "Expected exponent to be 0." ) ;
123- Assert . AreEqual ( 5 , result . ExponentNumerator , "Expected exponent numerator to be 5." ) ;
124- Assert . AreEqual ( 0.625m , result . Decimal , "Expected decimal value to be 0.625." ) ;
127+ Assert . AreEqual ( 0.625m , result . ToDecimal ( ) , "Expected decimal value to be 0.625." ) ;
125128 }
126129
127130 /// <summary>
@@ -145,6 +148,7 @@ public void FractionNegativeHandling()
145148 Assert . AreEqual ( - 1 , frac . Numerator , "Expected numerator to be -1." ) ;
146149 Assert . AreEqual ( 3 , frac . Denominator , "Expected denominator to be 3." ) ;
147150
151+ // The denominator should flip to positive, keeping the negative on the numerator
148152 var frac2 = new Fraction ( 3 , - 9 ) ;
149153 Assert . AreEqual ( - 1 , frac2 . Numerator , "Expected numerator to be -1." ) ;
150154 Assert . AreEqual ( 3 , frac2 . Denominator , "Expected denominator to be 3." ) ;
0 commit comments