import { run } from '../src/js/index';

let testRun = (x: string) => {
  let result = run(x)
  if(result.tag == 'Ok'){
    return { tag: 'Ok', value: result.value.exports }
  }
  else {
    return result
  }
}

describe("Simple calculations and results", () => {
    test("mean(normal(5,2))", () => {
        expect(testRun("mean(normal(5,2))")).toEqual({ tag: 'Ok', value: [ { NAME: 'Float', VAL: 5  } ] })
    })
    test("10+10", () => {
        let foo = testRun("10 + 10")
        expect(foo).toEqual({ tag: 'Ok', value: [ { NAME: 'Float', VAL: 20  } ] })
    })
})
describe("Log function", () => {
    test("log(1) = 0", () => {
      let foo = testRun("log(1)")
      expect(foo).toEqual({ tag: 'Ok', value: [ { NAME: 'Float', VAL: 0} ]})
    })
})

describe("Multimodal too many weights error", () => {
    test("mm(0,0,[0,0,0])", () => {
      let foo = testRun("mm(0,0,[0,0,0])")
      expect(foo).toEqual({ "tag": "Error", "value": "Function multimodal error: Too many weights provided" })
    })
});