// Generated by ReScript, PLEASE EDIT WITH CARE
'use strict';

var Jest = require("@glennsl/bs-jest/src/jest.bs.js");
var IC$OptolithClient = require("../IC.bs.js");

Jest.describe("getAPForRange", (function (param) {
        Jest.test("returns positive int on increase", (function (param) {
                return Jest.Expect.toBe(2, Jest.Expect.expect(IC$OptolithClient.getAPForRange(/* A */0, 4, 6)));
              }));
        Jest.test("returns negative int on decrease", (function (param) {
                return Jest.Expect.toBe(-2, Jest.Expect.expect(IC$OptolithClient.getAPForRange(/* A */0, 4, 2)));
              }));
        Jest.test("returns positive int on multi increase above threshold", (function (param) {
                return Jest.Expect.toBe(27, Jest.Expect.expect(IC$OptolithClient.getAPForRange(/* C */2, 14, 16)));
              }));
        Jest.test("returns negative int on multi decrease above threshold", (function (param) {
                return Jest.Expect.toBe(-15, Jest.Expect.expect(IC$OptolithClient.getAPForRange(/* C */2, 14, 12)));
              }));
        Jest.test("returns positive int on multi increase around threshold for E", (function (param) {
                return Jest.Expect.toBe(45, Jest.Expect.expect(IC$OptolithClient.getAPForRange(/* E */4, 13, 15)));
              }));
        Jest.test("returns negative int on multi decrease for E", (function (param) {
                return Jest.Expect.toBe(-30, Jest.Expect.expect(IC$OptolithClient.getAPForRange(/* E */4, 13, 11)));
              }));
        return Jest.test("returns positive int on multi increase above threshold for E", (function (param) {
                      return Jest.Expect.toBe(75, Jest.Expect.expect(IC$OptolithClient.getAPForRange(/* E */4, 14, 16)));
                    }));
      }));

Jest.describe("getAPForInc", (function (param) {
        Jest.test("returns flat cost", (function (param) {
                return Jest.Expect.toBe(1, Jest.Expect.expect(IC$OptolithClient.getAPForInc(/* A */0, 4)));
              }));
        Jest.test("returns multiplied cost", (function (param) {
                return Jest.Expect.toBe(12, Jest.Expect.expect(IC$OptolithClient.getAPForInc(/* C */2, 14)));
              }));
        Jest.test("returns flat cost for E", (function (param) {
                return Jest.Expect.toBe(15, Jest.Expect.expect(IC$OptolithClient.getAPForInc(/* E */4, 13)));
              }));
        return Jest.test("returns multiplied cost for E", (function (param) {
                      return Jest.Expect.toBe(30, Jest.Expect.expect(IC$OptolithClient.getAPForInc(/* E */4, 14)));
                    }));
      }));

Jest.describe("getAPForDec", (function (param) {
        Jest.test("returns flat cost", (function (param) {
                return Jest.Expect.toBe(-1, Jest.Expect.expect(IC$OptolithClient.getAPForDec(/* A */0, 4)));
              }));
        Jest.test("returns multiplied cost", (function (param) {
                return Jest.Expect.toBe(-9, Jest.Expect.expect(IC$OptolithClient.getAPForDec(/* C */2, 14)));
              }));
        Jest.test("returns flat cost for E", (function (param) {
                return Jest.Expect.toBe(-15, Jest.Expect.expect(IC$OptolithClient.getAPForDec(/* E */4, 14)));
              }));
        return Jest.test("returns multiplied cost for E", (function (param) {
                      return Jest.Expect.toBe(-30, Jest.Expect.expect(IC$OptolithClient.getAPForDec(/* E */4, 15)));
                    }));
      }));

Jest.describe("getAPForActivatation", (function (param) {
        Jest.test("returns activation cost for A", (function (param) {
                return Jest.Expect.toBe(1, Jest.Expect.expect(IC$OptolithClient.getAPForActivatation(/* A */0)));
              }));
        Jest.test("returns activation cost for C", (function (param) {
                return Jest.Expect.toBe(3, Jest.Expect.expect(IC$OptolithClient.getAPForActivatation(/* C */2)));
              }));
        return Jest.test("returns activation cost for E", (function (param) {
                      return Jest.Expect.toBe(15, Jest.Expect.expect(IC$OptolithClient.getAPForActivatation(/* E */4)));
                    }));
      }));

Jest.describe("icToStr", (function (param) {
        Jest.test("returns name of A", (function (param) {
                return Jest.Expect.toBe("A", Jest.Expect.expect(IC$OptolithClient.icToStr(/* A */0)));
              }));
        return Jest.test("returns name of E", (function (param) {
                      return Jest.Expect.toBe("E", Jest.Expect.expect(IC$OptolithClient.icToStr(/* E */4)));
                    }));
      }));

/*  Not a pure module */
