@@ -20,7 +20,6 @@ LC.configure({ purity: "LetRec", numEncoding: { fromInt, toInt } });
20
20
const solutionText = readFileSync ( new URL ( "./solution.lc" , import . meta. url ) , { encoding : "utf8" } ) ;
21
21
const solution = LC . compile ( solutionText ) ;
22
22
const { succ, pred, add, negate, sub, zero, lt0, le0, ge0, gt0, compare } = solution ;
23
- const { True, False, LT , EQ , GT } = solution ;
24
23
25
24
const toBoolean = p => p ( true ) ( false ) ;
26
25
const toOrdering = cmp => cmp ( "LT" ) ( "EQ" ) ( "GT" ) ;
@@ -33,46 +32,41 @@ describe("NegaBinaryScott", () => {
33
32
} ) ;
34
33
it ( "succ" , ( ) => {
35
34
for ( let n = - 10 ; n <= 10 ; n ++ )
36
- assert . strictEqual ( toInt ( succ ( fromInt ( n ) ) ) , n + 1 , `succ ${ n } ` ) ;
37
- // assert.strictEqual( toInt(pred(fromInt(n))), n-1, `pred ${ n }` );
35
+ assert . strictEqual ( toInt ( succ ( n ) ) , n + 1 , `succ ${ n } ` ) ;
38
36
} ) ;
39
37
it ( "pred" , ( ) => {
40
38
for ( let n = - 10 ; n <= 10 ; n ++ )
41
- // assert.strictEqual( toInt(succ(fromInt(n))), n+1, `succ ${ n }` ),
42
- assert . strictEqual ( toInt ( pred ( fromInt ( n ) ) ) , n - 1 , `pred ${ n } ` ) ;
39
+ assert . strictEqual ( toInt ( pred ( n ) ) , n - 1 , `pred ${ n } ` ) ;
43
40
} ) ;
44
41
it ( "add" , ( ) => {
45
42
for ( let m = - 10 ; m <= 10 ; m ++ )
46
- for ( let n = - 10 ; n <= 10 ; n ++ ) {
47
- const actual = toInt ( add ( fromInt ( m ) ) ( fromInt ( n ) ) ) ;
48
- assert . strictEqual ( actual , m + n , `add ${ m } ${ n } ` ) ;
49
- }
43
+ for ( let n = - 10 ; n <= 10 ; n ++ )
44
+ assert . strictEqual ( toInt ( add ( m ) ( n ) ) , m + n , `add ${ m } ${ n } ` ) ;
50
45
} ) ;
51
46
it ( "negate" , ( ) => {
52
47
for ( let n = - 10 ; n <= 10 ; n ++ )
53
- assert . strictEqual ( toInt ( negate ( fromInt ( n ) ) ) , - n , `negate ${ n } ` ) ;
48
+ assert . strictEqual ( toInt ( negate ( n ) ) , - n , `negate ${ n } ` ) ;
49
+ } ) ;
50
+ it ( "negate . negate" , ( ) => {
51
+ for ( let n = - 10 ; n <= 10 ; n ++ )
52
+ assert . strictEqual ( toInt ( negate ( negate ( n ) ) ) , n , `negate (negate ${ n } )` ) ;
54
53
} ) ;
55
54
it ( "sub" , ( ) => {
56
55
for ( let m = - 10 ; m <= 10 ; m ++ )
57
- for ( let n = - 10 ; n <= 10 ; n ++ ) {
58
- const actual = toInt ( sub ( fromInt ( m ) ) ( fromInt ( n ) ) ) ;
59
- assert . strictEqual ( actual , m - n , `sub ${ m } ${ n } ` ) ;
60
- }
56
+ for ( let n = - 10 ; n <= 10 ; n ++ )
57
+ assert . strictEqual ( toInt ( sub ( m ) ( n ) ) , m - n , `sub ${ m } ${ n } ` ) ;
61
58
} ) ;
62
59
it ( "eq, uneq" , ( ) => {
63
60
for ( let n = - 10 ; n <= 10 ; n ++ )
64
- assert . equal ( toBoolean ( zero ( fromInt ( n ) ) ) , n === 0 , `zero ${ n } ` ) ,
65
- assert . equal ( toBoolean ( lt0 ( fromInt ( n ) ) ) , n < 0 , `lt0 ${ n } ` ) ,
66
- assert . equal ( toBoolean ( le0 ( fromInt ( n ) ) ) , n <= 0 , `le0 ${ n } ` ) ,
67
- assert . equal ( toBoolean ( ge0 ( fromInt ( n ) ) ) , n >= 0 , `ge0 ${ n } ` ) ,
68
- assert . equal ( toBoolean ( gt0 ( fromInt ( n ) ) ) , n > 0 , `gt0 ${ n } ` ) ;
61
+ assert . strictEqual ( toBoolean ( zero ( n ) ) , n === 0 , `zero ${ n } ` ) ,
62
+ assert . strictEqual ( toBoolean ( lt0 ( n ) ) , n < 0 , `lt0 ${ n } ` ) ,
63
+ assert . strictEqual ( toBoolean ( le0 ( n ) ) , n <= 0 , `le0 ${ n } ` ) ,
64
+ assert . strictEqual ( toBoolean ( ge0 ( n ) ) , n >= 0 , `ge0 ${ n } ` ) ,
65
+ assert . strictEqual ( toBoolean ( gt0 ( n ) ) , n > 0 , `gt0 ${ n } ` ) ;
69
66
} ) ;
70
67
it ( "compare" , ( ) => {
71
68
for ( let m = - 10 ; m <= 10 ; m ++ )
72
- for ( let n = - 10 ; n <= 10 ; n ++ ) {
73
- const actual = toOrdering ( compare ( fromInt ( m ) ) ( fromInt ( n ) ) ) ;
74
- const expected = m > n ? "GT" : m < n ? "LT" : "EQ" ;
75
- assert . equal ( actual , expected , `compare ${ m } ${ n } ` ) ;
76
- }
69
+ for ( let n = - 10 ; n <= 10 ; n ++ )
70
+ assert . strictEqual ( toOrdering ( compare ( m ) ( n ) ) , m > n ? "GT" : m < n ? "LT" : "EQ" , `compare ${ m } ${ n } ` ) ;
77
71
} ) ;
78
72
} ) ;
0 commit comments