Skip to content

Commit

Permalink
Merge branch 'main' into dependabot/npm_and_yarn/types/jest-29.5.12
Browse files Browse the repository at this point in the history
  • Loading branch information
s-kybound authored Apr 14, 2024
2 parents 1aaa55d + d9bd5a6 commit ba6c5a3
Show file tree
Hide file tree
Showing 15 changed files with 2,132 additions and 205 deletions.
2 changes: 1 addition & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

version: 2
updates:
- package-ecosystem: npm # See documentation for possible values
- package-ecosystem: "npm" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
45 changes: 45 additions & 0 deletions .github/workflows/nodejs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions

name: Node.js CI

on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Check for package-lock.json
run: |
if [ -e package-lock.json ]; then
echo "package-lock.json found; please do not use NPM! This project uses Yarn!"
exit 1
fi
exit 0
- name: Install dependencies (apt)
run: |
sudo apt-get update
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: yarn
- run: yarn install
- run: yarn format:ci
- run: yarn eslint
- run: yarn test
- run: yarn test-coverage
env:
CI: true
- name: Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
1 change: 1 addition & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
yarn format && yarn eslint
1 change: 1 addition & 0 deletions .husky/pre-push
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
yarn format && yarn eslint && yarn test
1 change: 1 addition & 0 deletions jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ module.exports = {
"^.+\\.(ts|tsx)?$": "ts-jest",
"^.+\\.(js|jsx)$": "babel-jest",
},
maxWorkers: 1,
};
10 changes: 7 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,16 @@
"@types/estree": "^1.0.0",
"acorn": "^8.8.2",
"acorn-walk": "^8.2.0",
"js-base64": "^3.7.5"
"js-base64": "^3.7.7"
},
"scripts": {
"build-libs": "npx ts-node ./src/compile-libs.ts",
"test": "jest",
"lint": "eslint --ignore-path .eslintignore --ext .ts",
"format": "prettier --ignore-path .gitignore --write \"**/*.+(js|ts|json)\""
"test-coverage": "jest --coverage",
"eslint": "eslint --ignore-path .eslintignore --ext .ts",
"format": "prettier --ignore-path .gitignore --write \"**/*.+(js|ts|json)\"",
"format:ci": "prettier --ignore-path .gitignore --list-different \"**/*.+(js|ts|json)\"",
"prepare": "husky"
},
"meta": {},
"devDependencies": {
Expand All @@ -49,6 +52,7 @@
"eslint-plugin-import": "^2.25.2",
"eslint-plugin-n": "^15.0.0 || ^16.0.0 ",
"eslint-plugin-promise": "^6.0.0",
"husky": "^9.0.11",
"jest": "^29.7.0",
"prettier": "^3.2.4",
"source-map": "^0.7.4",
Expand Down
105 changes: 105 additions & 0 deletions src/stdlib/__tests__/base.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
import * as base from "../base";
import { SchemeInteger } from "../core-math";

function makeInteger(n: number): SchemeInteger {
return SchemeInteger.build(n);
}

test("modulo works with positive numbers", () => {
expect(base.modulo(makeInteger(5), makeInteger(3))).toEqual(makeInteger(2));
expect(base.modulo(makeInteger(5), makeInteger(5))).toEqual(makeInteger(0));
expect(base.modulo(makeInteger(5), makeInteger(6))).toEqual(makeInteger(5));
expect(base.modulo(makeInteger(5), makeInteger(7))).toEqual(makeInteger(5));
expect(base.modulo(makeInteger(5), makeInteger(8))).toEqual(makeInteger(5));
expect(base.modulo(makeInteger(5), makeInteger(9))).toEqual(makeInteger(5));
expect(base.modulo(makeInteger(5), makeInteger(-4))).toEqual(makeInteger(-3));
});

test("modulo works with negative numbers", () => {
expect(base.modulo(makeInteger(-5), makeInteger(3))).toEqual(makeInteger(1));
expect(base.modulo(makeInteger(-5), makeInteger(5))).toEqual(makeInteger(0));
expect(base.modulo(makeInteger(-5), makeInteger(6))).toEqual(makeInteger(1));
expect(base.modulo(makeInteger(-5), makeInteger(7))).toEqual(makeInteger(2));
expect(base.modulo(makeInteger(-5), makeInteger(8))).toEqual(makeInteger(3));
expect(base.modulo(makeInteger(-5), makeInteger(9))).toEqual(makeInteger(4));
expect(base.modulo(makeInteger(-5), makeInteger(-4))).toEqual(
makeInteger(-1),
);
});

test("quotient works with positive numbers", () => {
expect(base.quotient(makeInteger(5), makeInteger(3))).toEqual(makeInteger(1));
expect(base.quotient(makeInteger(5), makeInteger(5))).toEqual(makeInteger(1));
expect(base.quotient(makeInteger(5), makeInteger(6))).toEqual(makeInteger(0));
expect(base.quotient(makeInteger(5), makeInteger(7))).toEqual(makeInteger(0));
expect(base.quotient(makeInteger(5), makeInteger(8))).toEqual(makeInteger(0));
expect(base.quotient(makeInteger(5), makeInteger(-4))).toEqual(
makeInteger(-1),
);
});

test("quotient works with negative numbers", () => {
expect(base.quotient(makeInteger(-5), makeInteger(3))).toEqual(
makeInteger(-1),
);
expect(base.quotient(makeInteger(-5), makeInteger(5))).toEqual(
makeInteger(-1),
);
expect(base.quotient(makeInteger(-5), makeInteger(6))).toEqual(
makeInteger(0),
);
expect(base.quotient(makeInteger(-5), makeInteger(7))).toEqual(
makeInteger(0),
);
expect(base.quotient(makeInteger(-5), makeInteger(8))).toEqual(
makeInteger(0),
);
expect(base.quotient(makeInteger(-5), makeInteger(-4))).toEqual(
makeInteger(1),
);
});

test("remainder works with positive numbers", () => {
expect(base.remainder(makeInteger(5), makeInteger(3))).toEqual(
makeInteger(2),
);
expect(base.remainder(makeInteger(5), makeInteger(5))).toEqual(
makeInteger(0),
);
expect(base.remainder(makeInteger(5), makeInteger(6))).toEqual(
makeInteger(5),
);
expect(base.remainder(makeInteger(5), makeInteger(7))).toEqual(
makeInteger(5),
);
});

test("remainder works with negative numbers", () => {
expect(base.remainder(makeInteger(-5), makeInteger(3))).toEqual(
makeInteger(-2),
);
expect(base.remainder(makeInteger(-5), makeInteger(5))).toEqual(
makeInteger(0),
);
expect(base.remainder(makeInteger(-5), makeInteger(6))).toEqual(
makeInteger(-5),
);
expect(base.remainder(makeInteger(-5), makeInteger(7))).toEqual(
makeInteger(-5),
);
});

test("gcd", () => {
expect(base.gcd(makeInteger(8), makeInteger(12))).toEqual(makeInteger(4));
expect(base.gcd(makeInteger(8), makeInteger(13))).toEqual(makeInteger(1));
expect(base.gcd(makeInteger(0), makeInteger(13))).toEqual(makeInteger(13));
expect(base.gcd(makeInteger(0), makeInteger(0))).toEqual(makeInteger(0));
expect(base.gcd(makeInteger(4), makeInteger(-2))).toEqual(makeInteger(2));
});

test("lcm", () => {
expect(base.lcm(makeInteger(8), makeInteger(12))).toEqual(makeInteger(24));
expect(base.lcm(makeInteger(8), makeInteger(13))).toEqual(makeInteger(104));
expect(base.lcm(makeInteger(0), makeInteger(13))).toEqual(makeInteger(0));
expect(base.lcm(makeInteger(4), makeInteger(-2))).toEqual(makeInteger(4));
});
Loading

0 comments on commit ba6c5a3

Please sign in to comment.