jsPsych/packages/jspsych/tests/data/datacolumn.test.ts
bjoluc c119650471 Move experiment execution into jsPsych.run()
The `run()` method takes a timeline and returns a promise that is
resolved when the experiment finishes.
Hence, jsPsych can now be initialized without starting an experiment.
This re-enables usage of `jsPsych.timelineVariable()` in timeline
definitions and repairs exclusion checks and extension loading.
2021-07-19 17:10:37 +02:00

73 lines
1.8 KiB
TypeScript

import { DataCollection } from "../../src/modules/data/DataCollection";
const data = [
{ rt: 100, filter: true },
{ rt: 200, filter: false },
{ rt: 300, filter: true },
{ rt: 400, filter: false },
{ rt: 500, filter: false },
];
describe("DataColumn", () => {
let dataCollection: DataCollection;
beforeEach(() => {
dataCollection = new DataCollection(data);
});
test("#sum", () => {
expect(dataCollection.select("rt").sum()).toBe(1500);
});
test("#mean", () => {
expect(dataCollection.select("rt").mean()).toBe(300);
});
test("#count", () => {
expect(dataCollection.select("rt").count()).toBe(5);
});
test("#min", () => {
expect(dataCollection.select("rt").min()).toBe(100);
});
test("#max", () => {
expect(dataCollection.select("rt").max()).toBe(500);
});
test("#variance", () => {
expect(dataCollection.select("rt").variance()).toBe(
(Math.pow(200, 2) + Math.pow(100, 2) + Math.pow(100, 2) + Math.pow(200, 2)) / (5 - 1)
);
});
test("#sd", () => {
expect(dataCollection.select("rt").sd()).toBe(
Math.sqrt(
(Math.pow(200, 2) + Math.pow(100, 2) + Math.pow(100, 2) + Math.pow(200, 2)) / (5 - 1)
)
);
});
test("#median", () => {
expect(dataCollection.select("rt").median()).toBe(300);
});
test("#subset", () => {
expect(
dataCollection
.select("rt")
.subset((x) => {
return x > 300;
})
.count()
).toBe(2);
});
test("#frequencies", () => {
expect(dataCollection.select("filter").frequencies()).toEqual({ true: 2, false: 3 });
});
test("#all", () => {
expect(
dataCollection.select("rt").all((x) => {
return x < 600;
})
).toBe(true);
expect(
dataCollection.select("filter").all((x) => {
return x;
})
).toBe(false);
});
});