test_leiden_oefenopgave_v12.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. from tests.rulestestcase import RulesTestCase as TestCase
  2. class TestLeidenOefenopgaveV12(TestCase):
  3. def test_1_a(self):
  4. self.assertRewrite(['-5(x2 - 3x + 6)',
  5. '-5(x ^ 2 - 3x) - 5 * 6',
  6. '-5x ^ 2 - 5 * -3x - 5 * 6',
  7. '-5x ^ 2 - -15x - 5 * 6',
  8. '-5x ^ 2 + 15x - 5 * 6',
  9. '-5x ^ 2 + 15x - 30'])
  10. def test_1_d(self):
  11. self.assertRewrite(['(2x + x)x',
  12. '(2 + 1)xx',
  13. '3xx',
  14. '3x ^ (1 + 1)',
  15. '3x ^ 2'])
  16. def test_1_e(self):
  17. self.assertRewrite([
  18. '-2(6x - 4) ^ 2x',
  19. '-2(6x - 4)(6x - 4)x',
  20. '(-2 * 6x - 2 * -4)(6x - 4)x',
  21. '(-12x - 2 * -4)(6x - 4)x',
  22. '(-12x - -8)(6x - 4)x',
  23. '(-12x + 8)(6x - 4)x',
  24. '(-12x * 6x - 12x * -4 + 8 * 6x + 8 * -4)x',
  25. '(-72xx - 12x * -4 + 8 * 6x + 8 * -4)x',
  26. '(-72x ^ (1 + 1) - 12x * -4 + 8 * 6x + 8 * -4)x',
  27. '(-72x ^ 2 - 12x * -4 + 8 * 6x + 8 * -4)x',
  28. '(-72x ^ 2 - -48x + 8 * 6x + 8 * -4)x',
  29. '(-72x ^ 2 + 48x + 8 * 6x + 8 * -4)x',
  30. '(-72x ^ 2 + 48x + 48x + 8 * -4)x',
  31. '(-72x ^ 2 + (1 + 1) * 48x + 8 * -4)x',
  32. '(-72x ^ 2 + 2 * 48x + 8 * -4)x',
  33. '(-72x ^ 2 + 96x + 8 * -4)x',
  34. '(-72x ^ 2 + 96x - 32)x',
  35. 'x(-72x ^ 2 + 96x) + x * -32',
  36. 'x * -72x ^ 2 + x * 96x + x * -32',
  37. '-x * 72x ^ 2 + x * 96x + x * -32',
  38. '-x ^ (1 + 2) * 72 + x * 96x + x * -32',
  39. '-x ^ 3 * 72 + x * 96x + x * -32',
  40. '-x ^ 3 * 72 + x ^ (1 + 1) * 96 + x * -32',
  41. '-x ^ 3 * 72 + x ^ 2 * 96 + x * -32',
  42. '-x ^ 3 * 72 + x ^ 2 * 96 - x * 32',
  43. '72 * -x ^ 3 + x ^ 2 * 96 - x * 32',
  44. '-72x ^ 3 + x ^ 2 * 96 - x * 32',
  45. '-72x ^ 3 + 96x ^ 2 - x * 32',
  46. '-72x ^ 3 + 96x ^ 2 + 32 * -x',
  47. '-72x ^ 3 + 96x ^ 2 - 32x',
  48. ])
  49. def test_2_a(self):
  50. self.assertRewrite([
  51. '(a2b^-1)^3(ab2)',
  52. '(a ^ 2 * (1 / b ^ 1)) ^ 3 * ab ^ 2',
  53. '(a ^ 2 * (1 / b)) ^ 3 * ab ^ 2',
  54. '(a ^ 2 * 1 / b) ^ 3 * ab ^ 2',
  55. '(a ^ 2 / b) ^ 3 * ab ^ 2',
  56. '(a ^ 2) ^ 3 / b ^ 3 * ab ^ 2',
  57. 'a ^ (2 * 3) / b ^ 3 * ab ^ 2',
  58. 'a ^ 6 / b ^ 3 * ab ^ 2',
  59. 'aa ^ 6 / b ^ 3 * b ^ 2',
  60. 'a ^ (1 + 6) / b ^ 3 * b ^ 2',
  61. 'a ^ 7 / b ^ 3 * b ^ 2',
  62. # FIXME: 'b ^ 2 * a ^ 7 / b ^ 3',
  63. # FIXME: 'b ^ (2 - 3) * a ^ 7',
  64. ])
  65. def test_2_b(self):
  66. self.assertRewrite([
  67. 'a3b2a3',
  68. 'a ^ (3 + 3)b ^ 2',
  69. 'a ^ 6 * b ^ 2',
  70. ])
  71. def test_2_c(self):
  72. self.assertRewrite([
  73. 'a5+a3',
  74. 'a ^ 5 + a ^ 3',
  75. ])
  76. def test_2_d(self):
  77. self.assertRewrite([
  78. 'a2+a2',
  79. '(1 + 1)a ^ 2',
  80. '2a ^ 2',
  81. ])
  82. def test_2_e(self):
  83. self.assertRewrite([
  84. '4b^-2',
  85. '4(1 / b ^ 2)',
  86. '4 * 1 / b ^ 2',
  87. ])
  88. def test_2_f(self):
  89. self.assertRewrite([
  90. '(4b) ^ -2',
  91. '4 ^ -2 * b ^ -2',
  92. '1 / 4 ^ 2 * b ^ -2',
  93. '1 / 16 * b ^ -2',
  94. '1 / 16 * (1 / b ^ 2)',
  95. '1 * 1 / (16b ^ 2)',
  96. '1 / (16b ^ 2)',
  97. ])