SIGN IN SIGN UP

Algorithms and Data Structures implemented in JavaScript for beginners, following best practices.

34083 0 0 JavaScript
import { getNextElementaryGeneration } from '../Elementary'
describe('Elementary Cellular Automata', () => {
describe('Rule Errors', () => {
it('Correct', () => {
expect(() =>
getNextElementaryGeneration([0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], 128)
).not.toThrow()
})
it('Less than 0', () => {
expect(() =>
getNextElementaryGeneration([0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], -1)
).toThrow()
})
it('Greater than 255', () => {
expect(() =>
getNextElementaryGeneration([0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], 256)
).toThrow()
})
it('Decimal', () => {
expect(() =>
getNextElementaryGeneration([0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], 100.4)
).toThrow()
})
})
describe('Rule 54 Iterations', () => {
it('Generation 1', () => {
expect(
getNextElementaryGeneration([0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], 54)
).toEqual([0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0])
})
it('Generation 2', () => {
expect(
getNextElementaryGeneration([0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0], 54)
).toEqual([0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0])
})
it('Generation 3', () => {
expect(
getNextElementaryGeneration([0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0], 54)
).toEqual([0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0])
})
it('Generation 4', () => {
expect(
getNextElementaryGeneration([0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0], 54)
).toEqual([0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0])
})
})
describe('Rule 222 Iterations', () => {
it('Generation 1', () => {
expect(
getNextElementaryGeneration([0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], 222)
).toEqual([0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0])
})
it('Generation 2', () => {
expect(
getNextElementaryGeneration([0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0], 222)
).toEqual([0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0])
})
it('Generation 3', () => {
expect(
getNextElementaryGeneration([0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0], 222)
).toEqual([0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0])
})
it('Generation 4', () => {
expect(
getNextElementaryGeneration([0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0], 222)
).toEqual([0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0])
})
})
describe('Rule 60 Iterations', () => {
it('Generation 1', () => {
expect(
getNextElementaryGeneration([0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], 60)
).toEqual([0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0])
})
it('Generation 2', () => {
expect(
getNextElementaryGeneration([0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0], 60)
).toEqual([0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0])
})
it('Generation 3', () => {
expect(
getNextElementaryGeneration([0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0], 60)
).toEqual([0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0])
})
it('Generation 4', () => {
expect(
getNextElementaryGeneration([0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0], 60)
).toEqual([0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0])
})
})
describe('Rule 90 Iterations', () => {
it('Generation 1', () => {
expect(
getNextElementaryGeneration([0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], 90)
).toEqual([0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0])
})
it('Generation 2', () => {
expect(
getNextElementaryGeneration([0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0], 90)
).toEqual([0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0])
})
it('Generation 3', () => {
expect(
getNextElementaryGeneration([0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0], 90)
).toEqual([0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0])
})
it('Generation 4', () => {
expect(
getNextElementaryGeneration([0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0], 90)
).toEqual([0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0])
})
})
describe('Rule 30 Iterations', () => {
it('Generation 1', () => {
expect(
getNextElementaryGeneration([0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], 30)
).toEqual([0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0])
})
it('Generation 2', () => {
expect(
getNextElementaryGeneration([0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0], 30)
).toEqual([0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0])
})
it('Generation 3', () => {
expect(
getNextElementaryGeneration([0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0], 30)
).toEqual([0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0])
})
})
})