lots of exercises in java... from https://github.com/exercism/java

ComplexNumberTest.java 9.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. import org.junit.Ignore;
  2. import org.junit.Test;
  3. import static org.junit.Assert.assertEquals;
  4. public class ComplexNumberTest {
  5. // Test helpers
  6. private static final double DOUBLE_EQUALITY_TOLERANCE = 1e-15;
  7. private void assertDoublesEqual(double d1, double d2) {
  8. assertEquals(d1, d2, DOUBLE_EQUALITY_TOLERANCE);
  9. }
  10. private void assertComplexNumbersEqual(ComplexNumber c1, ComplexNumber c2) {
  11. assertDoublesEqual(c1.getReal(), c2.getReal());
  12. assertDoublesEqual(c1.getImag(), c2.getImag());
  13. }
  14. // Tests
  15. @Test
  16. public void testImaginaryUnitExhibitsDefiningProperty() {
  17. ComplexNumber expected = new ComplexNumber(-1.0, 0);
  18. ComplexNumber actual = new ComplexNumber(0, 1.0).times(new ComplexNumber(0, 1.0));
  19. assertComplexNumbersEqual(expected, actual);
  20. }
  21. @Ignore("Remove to run test")
  22. @Test
  23. public void testAdditionWithPurelyRealNumbers() {
  24. ComplexNumber expected = new ComplexNumber(3.0, 0);
  25. ComplexNumber actual = new ComplexNumber(1.0, 0).add(new ComplexNumber(2.0, 0));
  26. assertComplexNumbersEqual(expected, actual);
  27. }
  28. @Ignore("Remove to run test")
  29. @Test
  30. public void testAdditionWithPurelyImaginaryNumbers() {
  31. ComplexNumber expected = new ComplexNumber(0, 3.0);
  32. ComplexNumber actual = new ComplexNumber(0, 1.0).add(new ComplexNumber(0, 2.0));
  33. assertComplexNumbersEqual(expected, actual);
  34. }
  35. @Ignore("Remove to run test")
  36. @Test
  37. public void testAdditionWithRealAndImaginaryParts() {
  38. ComplexNumber expected = new ComplexNumber(4.0, 6.0);
  39. ComplexNumber actual = new ComplexNumber(1.0, 2.0).add(new ComplexNumber(3.0, 4.0));
  40. assertComplexNumbersEqual(expected, actual);
  41. }
  42. @Ignore("Remove to run test")
  43. @Test
  44. public void testSubtractionWithPurelyRealNumbers() {
  45. ComplexNumber expected = new ComplexNumber(-1.0, 0.0);
  46. ComplexNumber actual = new ComplexNumber(1.0, 0.0).minus(new ComplexNumber(2.0, 0.0));
  47. assertComplexNumbersEqual(expected, actual);
  48. }
  49. @Ignore("Remove to run test")
  50. @Test
  51. public void testSubtractionWithPurelyImaginaryNumbers() {
  52. ComplexNumber expected = new ComplexNumber(0, -1.0);
  53. ComplexNumber actual = new ComplexNumber(0, 1.0).minus(new ComplexNumber(0, 2.0));
  54. assertComplexNumbersEqual(expected, actual);
  55. }
  56. @Ignore("Remove to run test")
  57. @Test
  58. public void testSubtractionWithRealAndImaginaryParts() {
  59. ComplexNumber expected = new ComplexNumber(-2.0, -2.0);
  60. ComplexNumber actual = new ComplexNumber(1.0, 2.0).minus(new ComplexNumber(3.0, 4.0));
  61. assertComplexNumbersEqual(expected, actual);
  62. }
  63. @Ignore("Remove to run test")
  64. @Test
  65. public void testMultiplicationWithPurelyRealNumbers() {
  66. ComplexNumber expected = new ComplexNumber(2.0, 0);
  67. ComplexNumber actual = new ComplexNumber(1.0, 0).times(new ComplexNumber(2.0, 0));
  68. assertComplexNumbersEqual(expected, actual);
  69. }
  70. @Ignore("Remove to run test")
  71. @Test
  72. public void testMultiplicationWithPurelyImaginaryNumbers() {
  73. ComplexNumber expected = new ComplexNumber(-2.0, 0);
  74. ComplexNumber actual = new ComplexNumber(0, 1.0).times(new ComplexNumber(0, 2.0));
  75. assertComplexNumbersEqual(expected, actual);
  76. }
  77. @Ignore("Remove to run test")
  78. @Test
  79. public void testMultiplicationWithRealAndImaginaryParts() {
  80. ComplexNumber expected = new ComplexNumber(-5.0, 10.0);
  81. ComplexNumber actual = new ComplexNumber(1.0, 2.0).times(new ComplexNumber(3.0, 4.0));
  82. assertComplexNumbersEqual(expected, actual);
  83. }
  84. @Ignore("Remove to run test")
  85. @Test
  86. public void testDivisionWithPurelyRealNumbers() {
  87. ComplexNumber expected = new ComplexNumber(0.5, 0);
  88. ComplexNumber actual = new ComplexNumber(1.0, 0).div(new ComplexNumber(2.0, 0));
  89. assertComplexNumbersEqual(expected, actual);
  90. }
  91. @Ignore("Remove to run test")
  92. @Test
  93. public void testDivisionWithPurelyImaginaryNumbers() {
  94. ComplexNumber expected = new ComplexNumber(0.5, 0);
  95. ComplexNumber actual = new ComplexNumber(0, 1.0).div(new ComplexNumber(0, 2.0));
  96. assertComplexNumbersEqual(expected, actual);
  97. }
  98. @Ignore("Remove to run test")
  99. @Test
  100. public void testDivisionWithRealAndImaginaryParts() {
  101. ComplexNumber expected = new ComplexNumber(0.44, 0.08);
  102. ComplexNumber actual = new ComplexNumber(1.0, 2.0).div(new ComplexNumber(3.0, 4.0));
  103. assertComplexNumbersEqual(expected, actual);
  104. }
  105. @Ignore("Remove to run test")
  106. @Test
  107. public void testAbsoluteValueOfPositivePurelyRealNumber() {
  108. double expected = 5.0;
  109. double actual = new ComplexNumber(5.0, 0).abs();
  110. assertDoublesEqual(expected, actual);
  111. }
  112. @Ignore("Remove to run test")
  113. @Test
  114. public void testAbsoluteValueOfNegativePurelyRealNumber() {
  115. double expected = 5.0;
  116. double actual = new ComplexNumber(-5.0, 0).abs();
  117. assertDoublesEqual(expected, actual);
  118. }
  119. @Ignore("Remove to run test")
  120. @Test
  121. public void testAbsoluteValueOfPurelyImaginaryNumberWithPositiveImaginaryPart() {
  122. double expected = 5.0;
  123. double actual = new ComplexNumber(0, 5.0).abs();
  124. assertDoublesEqual(expected, actual);
  125. }
  126. @Ignore("Remove to run test")
  127. @Test
  128. public void testAbsoluteValueOfPurelyImaginaryNumberWithNegativeImaginaryPart() {
  129. double expected = 5.0;
  130. double actual = new ComplexNumber(0, -5.0).abs();
  131. assertDoublesEqual(expected, actual);
  132. }
  133. @Ignore("Remove to run test")
  134. @Test
  135. public void testAbsoluteValueOfNumberWithRealAndImaginaryParts() {
  136. double expected = 5.0;
  137. double actual = new ComplexNumber(3.0, 4.0).abs();
  138. assertDoublesEqual(expected, actual);
  139. }
  140. @Ignore("Remove to run test")
  141. @Test
  142. public void testConjugationOfPurelyRealNumber() {
  143. ComplexNumber expected = new ComplexNumber(5.0, 0);
  144. ComplexNumber actual = new ComplexNumber(5.0, 0).conjugate();
  145. assertComplexNumbersEqual(expected, actual);
  146. }
  147. @Ignore("Remove to run test")
  148. @Test
  149. public void testConjugationOfPurelyImaginaryNumber() {
  150. ComplexNumber expected = new ComplexNumber(0, -5.0);
  151. ComplexNumber actual = new ComplexNumber(0, 5.0).conjugate();
  152. assertComplexNumbersEqual(expected, actual);
  153. }
  154. @Ignore("Remove to run test")
  155. @Test
  156. public void testConjugationOfNumberWithRealAndImaginaryParts() {
  157. ComplexNumber expected = new ComplexNumber(1.0, -1.0);
  158. ComplexNumber actual = new ComplexNumber(1.0, 1.0).conjugate();
  159. assertComplexNumbersEqual(expected, actual);
  160. }
  161. @Ignore("Remove to run test")
  162. @Test
  163. public void testRealPartOfPurelyRealNumber() {
  164. double expected = 1.0;
  165. double actual = new ComplexNumber(1.0, 0).getReal();
  166. assertDoublesEqual(expected, actual);
  167. }
  168. @Ignore("Remove to run test")
  169. @Test
  170. public void testRealPartOfPurelyImaginaryNumber() {
  171. double expected = 0.0;
  172. double actual = new ComplexNumber(0, 1.0).getReal();
  173. assertDoublesEqual(expected, actual);
  174. }
  175. @Ignore("Remove to run test")
  176. @Test
  177. public void testRealPartOfNumberWithRealAndImaginaryParts() {
  178. double expected = 1.0;
  179. double actual = new ComplexNumber(1.0, 2.0).getReal();
  180. assertDoublesEqual(expected, actual);
  181. }
  182. @Ignore("Remove to run test")
  183. @Test
  184. public void testImaginaryPartOfPurelyRealNumber() {
  185. double expected = 0.0;
  186. double actual = new ComplexNumber(1.0, 0).getImag();
  187. assertDoublesEqual(expected, actual);
  188. }
  189. @Ignore("Remove to run test")
  190. @Test
  191. public void testImaginaryPartOfPurelyImaginaryNumber() {
  192. double expected = 1.0;
  193. double actual = new ComplexNumber(0, 1.0).getImag();
  194. assertDoublesEqual(expected, actual);
  195. }
  196. @Ignore("Remove to run test")
  197. @Test
  198. public void testImaginaryPartOfNumberWithRealAndImaginaryParts() {
  199. double expected = 2.0;
  200. double actual = new ComplexNumber(1.0, 2.0).getImag();
  201. assertDoublesEqual(expected, actual);
  202. }
  203. @Ignore("Remove to run test")
  204. @Test
  205. public void testExponentialOfPurelyImaginaryNumber() {
  206. ComplexNumber expected = new ComplexNumber(-1.0, 0);
  207. ComplexNumber actual = new ComplexNumber(0, Math.PI).exponentialOf();
  208. assertComplexNumbersEqual(expected, actual);
  209. }
  210. @Ignore("Remove to run test")
  211. @Test
  212. public void testExponentialOfZero() {
  213. ComplexNumber expected = new ComplexNumber(1.0, 0);
  214. ComplexNumber actual = new ComplexNumber(0, 0).exponentialOf();
  215. assertComplexNumbersEqual(expected, actual);
  216. }
  217. @Ignore("Remove to run test")
  218. @Test
  219. public void testExponentialOfPurelyRealNumber() {
  220. ComplexNumber expected = new ComplexNumber(Math.E, 0);
  221. ComplexNumber actual = new ComplexNumber(1.0, 0).exponentialOf();
  222. assertComplexNumbersEqual(expected, actual);
  223. }
  224. }