mirror of
https://github.com/jspsych/jsPsych.git
synced 2025-05-11 16:18:11 +00:00
119 lines
3.7 KiB
TypeScript
119 lines
3.7 KiB
TypeScript
import { DataCollection } from "../../src/modules/data/DataCollection";
|
|
|
|
describe("DataCollection", () => {
|
|
let dataCollection: DataCollection;
|
|
let data: any;
|
|
|
|
beforeEach(() => {
|
|
data = [
|
|
{ rt: 100, filter: true },
|
|
{ rt: 200, filter: false },
|
|
{ rt: 300, filter: true },
|
|
{ rt: 400, filter: false },
|
|
{ rt: 500, filter: false },
|
|
];
|
|
dataCollection = new DataCollection(data);
|
|
});
|
|
|
|
test("#filter", () => {
|
|
expect(dataCollection.filter({ filter: true }).count()).toBe(2);
|
|
});
|
|
test("#filter OR", () => {
|
|
expect(dataCollection.filter([{ filter: true }, { rt: 300 }]).count()).toBe(2);
|
|
expect(dataCollection.filter([{ filter: true }, { rt: 200 }]).count()).toBe(3);
|
|
});
|
|
test("#filterCustom", () => {
|
|
expect(
|
|
dataCollection
|
|
.filterCustom((x) => {
|
|
return x.rt > 200 && x.filter == false;
|
|
})
|
|
.count()
|
|
).toBe(2);
|
|
});
|
|
test("#ignore", () => {
|
|
expect(dataCollection.ignore("rt").select("rt").count()).toBe(0);
|
|
});
|
|
test("#select", () => {
|
|
expect(JSON.stringify(dataCollection.select("rt").values)).toBe(
|
|
JSON.stringify([100, 200, 300, 400, 500])
|
|
);
|
|
});
|
|
test("#addToAll", () => {
|
|
expect(dataCollection.readOnly().addToAll({ added: 5 }).select("added").count()).toBe(5);
|
|
});
|
|
test("#addToLast", () => {
|
|
dataCollection.addToLast({ lastonly: true });
|
|
expect(dataCollection.values()[4].lastonly).toBe(true);
|
|
});
|
|
test("#readOnly", () => {
|
|
const d = dataCollection.readOnly().values();
|
|
d[0].rt = 0;
|
|
expect(dataCollection.values()[0].rt).toBe(100);
|
|
});
|
|
test("not #readOnly", () => {
|
|
const d = dataCollection.values();
|
|
d[0].rt = 0;
|
|
expect(dataCollection.values()[0].rt).toBe(0);
|
|
});
|
|
test("#count", () => {
|
|
expect(dataCollection.count()).toBe(5);
|
|
});
|
|
test("#push", () => {
|
|
dataCollection.push({ rt: 600, filter: true });
|
|
expect(dataCollection.count()).toBe(6);
|
|
});
|
|
test("#values", () => {
|
|
expect(JSON.stringify(dataCollection.values())).toBe(JSON.stringify(data));
|
|
expect(dataCollection.values()).toBe(data);
|
|
});
|
|
test("#first", () => {
|
|
expect(dataCollection.first(3).count()).toBe(3);
|
|
expect(dataCollection.first(2).values()[1].rt).toBe(200);
|
|
expect(dataCollection.first().count()).toBe(1);
|
|
expect(() => {
|
|
dataCollection.first(-1);
|
|
}).toThrow();
|
|
expect(() => {
|
|
dataCollection.first(0);
|
|
}).toThrow();
|
|
expect(dataCollection.filter({ foo: "bar" }).first(1).count()).toBe(0);
|
|
const n = dataCollection.count();
|
|
const too_many = n + 1;
|
|
expect(dataCollection.first(too_many).count()).toBe(n);
|
|
});
|
|
test("#last", () => {
|
|
expect(dataCollection.last(2).count()).toBe(2);
|
|
expect(dataCollection.last(2).values()[0].rt).toBe(400);
|
|
expect(dataCollection.last().count()).toBe(1);
|
|
expect(() => {
|
|
dataCollection.last(-1);
|
|
}).toThrow();
|
|
expect(() => {
|
|
dataCollection.last(0);
|
|
}).toThrow();
|
|
expect(dataCollection.filter({ foo: "bar" }).last(1).count()).toBe(0);
|
|
const n = dataCollection.count();
|
|
const too_many = n + 1;
|
|
expect(dataCollection.last(too_many).count()).toBe(n);
|
|
});
|
|
test("#join", () => {
|
|
const dc1 = dataCollection.filter({ filter: true });
|
|
const dc2 = dataCollection.filter({ rt: 500 });
|
|
const data = dc1.join(dc2);
|
|
expect(data.count()).toBe(3);
|
|
expect(data.values()[2].rt).toBe(500);
|
|
});
|
|
test("#unqiueNames", () => {
|
|
expect(
|
|
new DataCollection([
|
|
{ rt: 100, filter: true },
|
|
{ rt: 200, filter: false },
|
|
{ rt: 300, filter: true, v1: false },
|
|
{ rt: 400, filter: false, v2: true },
|
|
{ rt: 500, filter: false, v1: false },
|
|
]).uniqueNames().length
|
|
).toBe(4);
|
|
});
|
|
});
|