@@ -7,81 +7,81 @@ var exprStripColor = KhanUtil.exprStripColor;
7
7
var exprSimplifyAssociative = KhanUtil . exprSimplifyAssociative ;
8
8
9
9
test ( "Expression formatter" , function ( ) {
10
- equals ( expr ( [ "-" , 1 ] ) , "-1" , "-1" ) ;
11
- equals ( expr ( [ "+" , 1 , 2 ] ) , "1+2" , "1 + 2" ) ;
12
- equals ( expr ( [ "+" , "elephant" , "potato" ] ) , "elephant+potato" , "random strings" ) ;
10
+ equal ( expr ( [ "-" , 1 ] ) , "-1" , "-1" ) ;
11
+ equal ( expr ( [ "+" , 1 , 2 ] ) , "1+2" , "1 + 2" ) ;
12
+ equal ( expr ( [ "+" , "elephant" , "potato" ] ) , "elephant+potato" , "random strings" ) ;
13
13
14
- equals ( expr ( [ "-" , 1 , 2 ] ) , "1-2" , "1 - 2" ) ;
15
- equals ( expr ( [ "-" , 1 , 2 , 3 , - 4 ] ) , "1-2-3-(-4)" , "1-2-3-(-4)" ) ;
16
- equals ( expr ( [ "-" , 1 ] ) , "-1" , "-1" ) ;
17
- equals ( expr ( [ "-" , - 1 ] ) , "-(-1)" , "-(-1)" ) ;
18
- equals ( expr ( [ "-" , 2 ] ) , "-2" , "-2" ) ;
19
- equals ( expr ( [ "-" , - 2 ] ) , "-(-2)" , "-(-2)" ) ;
14
+ equal ( expr ( [ "-" , 1 , 2 ] ) , "1-2" , "1 - 2" ) ;
15
+ equal ( expr ( [ "-" , 1 , 2 , 3 , - 4 ] ) , "1-2-3-(-4)" , "1-2-3-(-4)" ) ;
16
+ equal ( expr ( [ "-" , 1 ] ) , "-1" , "-1" ) ;
17
+ equal ( expr ( [ "-" , - 1 ] ) , "-(-1)" , "-(-1)" ) ;
18
+ equal ( expr ( [ "-" , 2 ] ) , "-2" , "-2" ) ;
19
+ equal ( expr ( [ "-" , - 2 ] ) , "-(-2)" , "-(-2)" ) ;
20
20
21
- equals ( expr ( [ "*" , "x" , "y" ] ) , "xy" , "x * y" ) ;
22
- equals ( expr ( [ "*" , 2 , 4 ] ) , "(2)(4)" , "2 * 4" ) ;
23
- equals ( expr ( [ "*" , 2 , 4 , "x" ] ) , "(2)(4)(x)" , "2 * 4 * x" ) ;
21
+ equal ( expr ( [ "*" , "x" , "y" ] ) , "xy" , "x * y" ) ;
22
+ equal ( expr ( [ "*" , 2 , 4 ] ) , "(2)(4)" , "2 * 4" ) ;
23
+ equal ( expr ( [ "*" , 2 , 4 , "x" ] ) , "(2)(4)(x)" , "2 * 4 * x" ) ;
24
24
25
- equals ( expr ( [ "*" , 2 , [ "^" , 4 , 2 ] ] ) , "2(4^{2})" , "2 * 4^2" ) ;
26
- equals ( expr ( [ "*" , 2 , [ "^" , 0 , 2 ] ] ) , "2(0^{2})" , "2 * 0^2" ) ;
27
- equals ( expr ( [ "*" , 2 , [ "^" , - 3 , 2 ] ] ) , "2(-3)^{2}" , "2 * (-3)^2" ) ;
25
+ equal ( expr ( [ "*" , 2 , [ "^" , 4 , 2 ] ] ) , "2(4^{2})" , "2 * 4^2" ) ;
26
+ equal ( expr ( [ "*" , 2 , [ "^" , 0 , 2 ] ] ) , "2(0^{2})" , "2 * 0^2" ) ;
27
+ equal ( expr ( [ "*" , 2 , [ "^" , - 3 , 2 ] ] ) , "2(-3)^{2}" , "2 * (-3)^2" ) ;
28
28
29
- equals ( expr ( [ "/" , 5 , 3 ] ) , "5/3" , "5 / 3" ) ;
29
+ equal ( expr ( [ "/" , 5 , 3 ] ) , "5/3" , "5 / 3" ) ;
30
30
31
- equals ( expr ( [ "^" , "x" , 2 ] ) , "x^{2}" , "x^2" ) ;
32
- equals ( expr ( [ "^" , [ "*" , "x" , "y" ] , 2 ] ) , "(xy)^{2}" , "(xy)^2" ) ;
33
- equals ( expr ( [ "^" , [ "*" , "x" , "y" ] , [ "+" , 2 , 3 ] ] ) , "(xy)^{2+3}" , "(xy)^{2+3}" ) ;
31
+ equal ( expr ( [ "^" , "x" , 2 ] ) , "x^{2}" , "x^2" ) ;
32
+ equal ( expr ( [ "^" , [ "*" , "x" , "y" ] , 2 ] ) , "(xy)^{2}" , "(xy)^2" ) ;
33
+ equal ( expr ( [ "^" , [ "*" , "x" , "y" ] , [ "+" , 2 , 3 ] ] ) , "(xy)^{2+3}" , "(xy)^{2+3}" ) ;
34
34
35
- equals ( expr ( [ "sin" , "x" ] ) , "\\sin{x}" , "sin x" ) ;
36
- equals ( expr ( [ "sin" , [ "*" , "x" , "y" ] ] ) , "\\sin{(xy)}" , "sin xy" ) ;
37
- equals ( expr ( [ "sin" , [ "+" , "x" , "y" ] ] ) , "\\sin{(x+y)}" , "sin(x + y)" ) ;
35
+ equal ( expr ( [ "sin" , "x" ] ) , "\\sin{x}" , "sin x" ) ;
36
+ equal ( expr ( [ "sin" , [ "*" , "x" , "y" ] ] ) , "\\sin{(xy)}" , "sin xy" ) ;
37
+ equal ( expr ( [ "sin" , [ "+" , "x" , "y" ] ] ) , "\\sin{(x+y)}" , "sin(x + y)" ) ;
38
38
39
- equals ( expr ( [ "*" , 2 , [ "sqrt" , 5 ] ] ) , "2\\sqrt{5}" , "2 sqrt(5)" ) ;
40
- equals ( expr ( [ "*" , [ "+" , "w" , "x" ] , "y" ] ) , "(w+x)(y)" , "(w + x) * y" ) ;
39
+ equal ( expr ( [ "*" , 2 , [ "sqrt" , 5 ] ] ) , "2\\sqrt{5}" , "2 sqrt(5)" ) ;
40
+ equal ( expr ( [ "*" , [ "+" , "w" , "x" ] , "y" ] ) , "(w+x)(y)" , "(w + x) * y" ) ;
41
41
42
- equals ( expr ( [ "+-" , "x" ] ) , "\\pm x" , "+- x" ) ;
43
- equals ( expr ( [ "+-" , "x" , "y" ] ) , "x \\pm y" , "x +- y" ) ;
44
- equals ( expr ( [ "+-" , [ "+" , "x" , "y" ] ] ) , "\\pm (x+y)" , "x +- y" ) ;
42
+ equal ( expr ( [ "+-" , "x" ] ) , "\\pm x" , "+- x" ) ;
43
+ equal ( expr ( [ "+-" , "x" , "y" ] ) , "x \\pm y" , "x +- y" ) ;
44
+ equal ( expr ( [ "+-" , [ "+" , "x" , "y" ] ] ) , "\\pm (x+y)" , "x +- y" ) ;
45
45
46
- equals ( expr ( [ "+" , [ "*" , 2 , [ "^" , 3 , 2 ] ] , [ "*" , - 3 , 3 ] , 4 ] ) , "2(3^{2})+(-3)(3)+4" , "issue 90" ) ;
47
- equals ( expr ( [ "+" , [ "*" , 2 , [ "^" , 3 , "x" ] ] , [ "*" , - 3 , "x" ] , 4 ] ) , "2(3^{x})-3x+4" , "issue 90" ) ;
48
- equals ( expr ( [ "*" , - 2 , [ "^" , "x" , 2 ] ] ) , "-2x^{2}" , "polynomial term" ) ;
46
+ equal ( expr ( [ "+" , [ "*" , 2 , [ "^" , 3 , 2 ] ] , [ "*" , - 3 , 3 ] , 4 ] ) , "2(3^{2})+(-3)(3)+4" , "issue 90" ) ;
47
+ equal ( expr ( [ "+" , [ "*" , 2 , [ "^" , 3 , "x" ] ] , [ "*" , - 3 , "x" ] , 4 ] ) , "2(3^{x})-3x+4" , "issue 90" ) ;
48
+ equal ( expr ( [ "*" , - 2 , [ "^" , "x" , 2 ] ] ) , "-2x^{2}" , "polynomial term" ) ;
49
49
50
- equals ( expr ( [ "-" , [ "+" , 1 , 2 ] ] ) , "-(1+2)" , "-1*(1+2)" ) ;
51
- equals ( expr ( [ "-" , [ "+" , 1 , - 2 ] ] ) , "-(1-2)" , "-1*(1-2)" ) ;
52
- equals ( expr ( [ "*" , 3 , [ "+" , 1 , - 2 ] , 4 ] ) , "3(1-2)(4)" , "3 * (1-2) * 4" ) ;
53
- equals ( expr ( [ "*" , 3 , [ "-" , 1 , - 2 ] , 4 ] ) , "3(1-(-2))(4)" , "3 * (1-(-2)) * 4" ) ;
54
- equals ( expr ( [ "+" , 1 , [ "-" , [ "*" , 2 , 3 , 4 ] ] , 5 , 6 ] ) , "1-(2)(3)(4)+5+6" , "1-(2)(3)(4)+5+6" ) ;
50
+ equal ( expr ( [ "-" , [ "+" , 1 , 2 ] ] ) , "-(1+2)" , "-1*(1+2)" ) ;
51
+ equal ( expr ( [ "-" , [ "+" , 1 , - 2 ] ] ) , "-(1-2)" , "-1*(1-2)" ) ;
52
+ equal ( expr ( [ "*" , 3 , [ "+" , 1 , - 2 ] , 4 ] ) , "3(1-2)(4)" , "3 * (1-2) * 4" ) ;
53
+ equal ( expr ( [ "*" , 3 , [ "-" , 1 , - 2 ] , 4 ] ) , "3(1-(-2))(4)" , "3 * (1-(-2)) * 4" ) ;
54
+ equal ( expr ( [ "+" , 1 , [ "-" , [ "*" , 2 , 3 , 4 ] ] , 5 , 6 ] ) , "1-(2)(3)(4)+5+6" , "1-(2)(3)(4)+5+6" ) ;
55
55
56
56
// Test colors
57
- equals ( expr ( [ "*" , 4 , [ "+" , 2 , [ "color" , "blue" , 2 ] ] ] ) , "4(2+\\color{blue}{2})" , "4(2+\\color{blue}{2})" ) ;
58
- equals ( expr ( [ "*" , 4 , [ "color" , "blue" , 2 ] ] ) , "(4)(\\color{blue}{2})" , "(4)(\\color{blue}{2})" ) ;
57
+ equal ( expr ( [ "*" , 4 , [ "+" , 2 , [ "color" , "blue" , 2 ] ] ] ) , "4(2+\\color{blue}{2})" , "4(2+\\color{blue}{2})" ) ;
58
+ equal ( expr ( [ "*" , 4 , [ "color" , "blue" , 2 ] ] ) , "(4)(\\color{blue}{2})" , "(4)(\\color{blue}{2})" ) ;
59
59
} ) ;
60
60
61
61
test ( "Expression evaluator" , function ( ) {
62
- equals ( expr ( [ "+" , 2 , 4 ] , true ) , 6 , "2 + 4" ) ;
63
- equals ( expr ( [ "*" , 2 , 4 ] , true ) , 8 , "2 * 4" ) ;
64
- equals ( expr ( [ "-" , 2 , 4 ] , true ) , - 2 , "2 - 4" ) ;
65
- equals ( expr ( [ "/" , 2 , 4 ] , true ) , 0.5 , "2 / 4" ) ;
66
- equals ( expr ( [ "^" , 2 , 4 ] , true ) , 16 , "2 ^ 4" ) ;
67
- equals ( expr ( [ "frac" , 2 , 4 ] , true ) , 0.5 , "2 `frac` 4" ) ;
68
- equals ( expr ( [ "sqrt" , 65536 ] , true ) , 256 , "sqrt 65536" ) ;
69
- equals ( expr ( [ "+" , [ "*" , 2 , 4 ] , 6 ] , true ) , 14 , "2 * 4 + 6" ) ;
62
+ equal ( expr ( [ "+" , 2 , 4 ] , true ) , 6 , "2 + 4" ) ;
63
+ equal ( expr ( [ "*" , 2 , 4 ] , true ) , 8 , "2 * 4" ) ;
64
+ equal ( expr ( [ "-" , 2 , 4 ] , true ) , - 2 , "2 - 4" ) ;
65
+ equal ( expr ( [ "/" , 2 , 4 ] , true ) , 0.5 , "2 / 4" ) ;
66
+ equal ( expr ( [ "^" , 2 , 4 ] , true ) , 16 , "2 ^ 4" ) ;
67
+ equal ( expr ( [ "frac" , 2 , 4 ] , true ) , 0.5 , "2 `frac` 4" ) ;
68
+ equal ( expr ( [ "sqrt" , 65536 ] , true ) , 256 , "sqrt 65536" ) ;
69
+ equal ( expr ( [ "+" , [ "*" , 2 , 4 ] , 6 ] , true ) , 14 , "2 * 4 + 6" ) ;
70
70
71
71
// Test colors
72
- equals ( expr ( [ "*" , 4 , [ "+" , 2 , [ "color" , "blue" , 2 ] ] ] , true ) , 16 , "4*(2+\\color{blue}{2})" ) ;
73
- equals ( expr ( [ "*" , 4 , [ "color" , "blue" , 2 ] ] , true ) , 8 , "(4)(\\color{blue}{2})" ) ;
72
+ equal ( expr ( [ "*" , 4 , [ "+" , 2 , [ "color" , "blue" , 2 ] ] ] , true ) , 16 , "4*(2+\\color{blue}{2})" ) ;
73
+ equal ( expr ( [ "*" , 4 , [ "color" , "blue" , 2 ] ] , true ) , 8 , "(4)(\\color{blue}{2})" ) ;
74
74
} ) ;
75
75
76
76
test ( "Expression utilities" , function ( ) {
77
77
//remove colors
78
- equals ( expr ( exprStripColor ( [ "color" , "green" , 17 ] ) ) , "17" , "color outside" ) ;
79
- equals ( expr ( exprStripColor ( [ "*" , 4 , [ "+" , 2 , [ "color" , "blue" , 2 ] ] ] ) ) , "4(2+2)" , "color inside" ) ;
78
+ equal ( expr ( exprStripColor ( [ "color" , "green" , 17 ] ) ) , "17" , "color outside" ) ;
79
+ equal ( expr ( exprStripColor ( [ "*" , 4 , [ "+" , 2 , [ "color" , "blue" , 2 ] ] ] ) ) , "4(2+2)" , "color inside" ) ;
80
80
81
81
//simplify an expression
82
- equals ( expr ( exprSimplifyAssociative ( [ "+" , 1 , [ "+" , [ "+" , 2 , 3 ] , 4 ] ] ) ) , "1+2+3+4" , "Simplify 1+((2+3)+4)" ) ;
83
- equals ( expr ( exprSimplifyAssociative ( [ "*" , [ "*" , [ "*" , 2 , 3 ] , 4 ] , 5 ] ) ) , "(2)(3)(4)(5)" , "Simplify ((2*3)*4)*5" ) ;
84
- equals ( expr ( exprSimplifyAssociative ( [ "*" , [ "*" , [ "*" , [ "+" , 1 , [ "+" , [ "+" , 2 , 3 , [ "*" , [ "*" , [ "*" , 2 , 3 ] , 4 ] , 5 ] ] , 4 ] ] , 3 ] , 4 ] , 5 ] ) ) , "(1+2+3+(2)(3)(4)(5)+4)(3)(4)(5)" , "Simplify alternating multiplication and addition" ) ;
82
+ equal ( expr ( exprSimplifyAssociative ( [ "+" , 1 , [ "+" , [ "+" , 2 , 3 ] , 4 ] ] ) ) , "1+2+3+4" , "Simplify 1+((2+3)+4)" ) ;
83
+ equal ( expr ( exprSimplifyAssociative ( [ "*" , [ "*" , [ "*" , 2 , 3 ] , 4 ] , 5 ] ) ) , "(2)(3)(4)(5)" , "Simplify ((2*3)*4)*5" ) ;
84
+ equal ( expr ( exprSimplifyAssociative ( [ "*" , [ "*" , [ "*" , [ "+" , 1 , [ "+" , [ "+" , 2 , 3 , [ "*" , [ "*" , [ "*" , 2 , 3 ] , 4 ] , 5 ] ] , 4 ] ] , 3 ] , 4 ] , 5 ] ) ) , "(1+2+3+(2)(3)(4)(5)+4)(3)(4)(5)" , "Simplify alternating multiplication and addition" ) ;
85
85
} ) ;
86
86
87
87
} ) ( ) ;
0 commit comments