Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# MojiScript ![project:experimental](https://img.shields.io/badge/project-experimental-orange.svg) [![build status](https://travis-ci.org/joelnet/MojiScript.svg?branch=master)](https://travis-ci.org/joelnet/MojiScript)
# MojiScript ![project:experimental](https://img.shields.io/badge/project-experimental-orange.svg) [![build status](https://travis-ci.org/joelnet/MojiScript.svg?branch=master)](https://travis-ci.org/joelnet/MojiScript) [![Coverage Status](https://coveralls.io/repos/github/joelnet/MojiScript/badge.svg?branch=master)](https://coveralls.io/github/joelnet/MojiScript?branch=master)

MojiScript is an Async First, experimental, opinionated, and functional language designed to have 100% compatibility with EcmaScript. This will allow full access to JavaScript modules (NPM) and all tooling already available to JavaScript. This means that MojiScript language features can run in any JavaScript application and vice-versa.

Expand Down
9 changes: 9 additions & 0 deletions combinators/__tests__/I.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
const I = require('../I')

describe('combinators/I', () => {
test('returns value', () => {
const expected = 888
const actual = I (expected)
expect(actual).toBe(expected)
})
})
9 changes: 9 additions & 0 deletions combinators/__tests__/K.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
const K = require('../K')

describe('combinators/K', () => {
test('returns value', () => {
const expected = 888
const actual = K (expected) (666)
expect(actual).toBe(expected)
})
})
11 changes: 11 additions & 0 deletions combinators/__tests__/S.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
const S = require('../S')

describe('combinators/S', () => {
test('returns value', () => {
const expected = 30
const f = a => b => a + b
const g = a => a * 2
const actual = S (f) (g) (10)
expect(actual).toBe(expected)
})
})
10 changes: 10 additions & 0 deletions combinators/__tests__/W.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const W = require('../W')

describe('combinators/W', () => {
test('returns value', () => {
const expected = 888
const f = a => b => a + b
const actual = W (f) (444)
expect(actual).toBe(expected)
})
})
19 changes: 19 additions & 0 deletions console/__tests__/error.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const error = require('../error')

describe('console/error', () => {
beforeEach(() => jest.spyOn(global.console, 'error').mockImplementation(() => {}))
afterEach(() => global.console.error.mockReset())

test('calls console.error', () => {
const expected = 888
error (expected)
const actual = global.console.error.mock.calls[0][0]
expect(actual).toBe(expected)
})

test('returns original value', () => {
const expected = 888
const actual = error (expected)
expect(actual).toBe(expected)
})
})
19 changes: 19 additions & 0 deletions console/__tests__/log.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const log = require('../log')

describe('console/log', () => {
beforeEach(() => jest.spyOn(global.console, 'log').mockImplementation(() => {}))
afterEach(() => global.console.log.mockReset())

test('calls console.log', () => {
const expected = 888
log (expected)
const actual = global.console.log.mock.calls[0][0]
expect(actual).toBe(expected)
})

test('returns original value', () => {
const expected = 888
const actual = log (expected)
expect(actual).toBe(expected)
})
})
21 changes: 21 additions & 0 deletions console/__tests__/logF.test..js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
const logF = require('../logF')

describe('console/logF', () => {
beforeEach(() => jest.spyOn(global.console, 'log').mockImplementation(() => {}))
afterEach(() => global.console.log.mockReset())

const double = x => x * 2

test('calls console.log', () => {
const expected = 888
logF (double) (444)
const actual = global.console.log.mock.calls[0][0]
expect(actual).toBe(expected)
})

test('returns original value', () => {
const expected = 888
const actual = logF (double) (expected)
expect(actual).toBe(expected)
})
})
32 changes: 32 additions & 0 deletions core/__tests__/after.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
const after = require('../after')

describe('core/after', () => {
test('value sent to f', async () => {
expect.assertions(1)
const expected = 888
const f = jest.fn()
const g = jest.fn()
await after (f) (g) (expected)
const actual = f.mock.calls[0][0]
expect(actual).toBe(expected)
})

test('value sent to g', async () => {
expect.assertions(1)
const expected = 888
const f = jest.fn()
const g = jest.fn()
await after (f) (g) (expected)
const actual = g.mock.calls[0][0]
expect(actual).toBe(expected)
})

test('returns g(x)', async () => {
expect.assertions(1)
const expected = 888
const f = jest.fn()
const g = x => x * 2
const actual = after (f) (g) (444)
expect(actual).resolves.toBe(expected)
})
})
19 changes: 19 additions & 0 deletions core/__tests__/unless.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const unless = require('../unless')

describe('core/unless', () => {
const isOdd = num => num % 2 !== 0
const isEven = num => num % 2 === 0
const double = num => num * 2

test('match calls function', () => {
const expected = 888
const actual = unless (isOdd) (double) (444)
expect(actual).toBe(expected)
})

test('no match returns value', () => {
const expected = 888
const actual = unless (isEven) (double) (expected)
expect(actual).toBe(expected)
})
})
19 changes: 19 additions & 0 deletions core/__tests__/when.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const when = require('../when')

describe('core/when', () => {
const isOdd = num => num % 2 !== 0
const isEven = num => num % 2 === 0
const double = num => num * 2

test('match calls function', () => {
const expected = 888
const actual = when (isEven) (double) (444)
expect(actual).toBe(expected)
})

test('no match returns value', () => {
const expected = 888
const actual = when (isOdd) (double) (expected)
expect(actual).toBe(expected)
})
})
21 changes: 21 additions & 0 deletions string/__tests__/append.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
const append = require('../append')

describe('string/append', () => {
test('appends strings', () => {
const expected = 'AB'
const actual = append ('B') ('A')
expect(actual).toBe(expected)
})

test('appends null as empty string', () => {
const expected = 'A'
const actual = append ('') ('A')
expect(actual).toBe(expected)
})

test('appends to null as empty string', () => {
const expected = 'B'
const actual = append ('B') ('')
expect(actual).toBe(expected)
})
})
21 changes: 21 additions & 0 deletions string/__tests__/prepend.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
const prepend = require('../prepend')

describe('string/prepend', () => {
test('prepend strings', () => {
const expected = 'AB'
const actual = prepend ('A') ('B')
expect(actual).toBe(expected)
})

test('prepend null as empty string', () => {
const expected = 'B'
const actual = prepend ('') ('B')
expect(actual).toBe(expected)
})

test('prepend to null as empty string', () => {
const expected = 'A'
const actual = prepend ('A') ('')
expect(actual).toBe(expected)
})
})
9 changes: 9 additions & 0 deletions string/__tests__/replace.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
const replace = require('../replace')

describe('string/replace', () => {
test('replaces string', () => {
const expected = 'ABC'
const actual = replace ('replace') ('B') ('AreplaceC')
expect(actual).toBe(expected)
})
})
7 changes: 7 additions & 0 deletions string/__tests__/template.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,13 @@ describe('string/template', () => {
{ foo: 'Sunshine' }
]

test('no args template', () => {
const expected = '!'
const func = $`${0}!`
const actual = func()
expect(actual).toBe(expected)
})

test('simple template', () => {
const expected = 'YAY!'
const func = $`${0}${1}${0}!`
Expand Down
6 changes: 0 additions & 6 deletions threading/fork.js

This file was deleted.