• Jump To … +
    data.js dentaku.normal.js env.js evaluator.js fileio.js list.js monad.js monad_transformer.js pair.js parser.js pprinter.js string.js turing.js chap01.spec.js chap02.spec.js chap03.spec.js chap04.spec.js chap05.spec.js chap06.spec.js chap07.spec.js chap08.spec.js data.spec.js dentaku.normal.spec.js evaluator.spec.js interpreter.spec.js list.spec.js monad.spec.js monad_transformer.spec.js pair.spec.js parser.spec.js pprinter.spec.js string.spec.js
  • data.spec.js

  • ¶
    "use strict";
    
    var expect = require('expect.js');
    var Pair = require('../lib/pair.js');
    var List = require('../lib/list.js');
    var Data = require('../lib/data.js');
    
    
    describe('Data', () => {
      var tuple = Pair.cons(1,2);
      it("Data#type", (next) => {
        Data.type(tuple,{
          pair: (_) => {
            expect(true).to.eql(true);
          }
        });
        Data.type(1,{
          pair: (_) => {
            expect().fail(); 
          },
          number: (value) => {
            expect(value).to.eql(1);
          }
        });
        next();
      });
      describe('Data#match', () => {
        it("Data#match(pair)", (next) => {
          Data.match(tuple,{
            cons: (x,y) => {
              expect(x).to.eql(1);
            }
          });
          next();
        });
        it("Data#match(list)", (next) => {
          var list = List.cons(1,List.empty());
          Data.match(list,{
            cons: (x,y) => {
              expect(x).to.eql(1);
            }
          });
          next();
        });
      });
    });