blob: 286cb1cdc52f8be404b4ba73efa6d7f9c28ceb04 [file] [log] [blame]
define(['state','state/manager'], function (stateClass, stateManagerClass) {
describe('KorAP.State', function () {
it('should be initializable', function () {
let s = stateClass.create();
expect(s.get()).toBeFalsy();
s = stateClass.create(true);
expect(s.get()).toBeTruthy();
});
it('should be settable and gettable', function () {
let s = stateClass.create();
expect(s.get()).toBeFalsy();
s.set(true);
expect(s.get()).toBeTruthy();
});
it('should accept a default value', function () {
let s = stateClass.create([true, false]);
expect(s.get()).toBeTruthy();
s.set(false);
expect(s.get()).toBeFalsy();
s = stateClass.create([true, false]);
s.setIfNotYet(false);
expect(s.get()).toBeFalsy();
s.setIfNotYet(true);
expect(s.get()).toBeFalsy();
});
it('should be associatable', function () {
let s = stateClass.create();
// Create
let obj1 = {
x : false,
setState : function (value) {
this.x = value;
}
};
// Create
let obj2 = {
x : true,
setState : function (value) {
this.x = value;
}
};
expect(s.associates()).toEqual(0);
expect(s.get()).toBeFalsy();
expect(obj1.x).toBeFalsy();
expect(obj2.x).toBeTruthy();
// Associate object with state
s.associate(obj1);
expect(s.associates()).toEqual(1);
s.associate(obj2);
expect(s.associates()).toEqual(2);
expect(s.get()).toBeFalsy();
expect(obj1.x).toBeFalsy();
expect(obj2.x).toBeFalsy();
s.set(true);
expect(s.get()).toBeTruthy();
expect(obj1.x).toBeTruthy();
expect(obj2.x).toBeTruthy();
});
it('should be clearable', function () {
let s = stateClass.create();
// Create
let obj1 = {
x : false,
setState : function (value) {
this.x = value;
}
};
// Create
let obj2 = {
x : true,
setState : function (value) {
this.x = value;
}
};
expect(s.associates()).toEqual(0);
expect(s.get()).toBeFalsy();
expect(obj1.x).toBeFalsy();
expect(obj2.x).toBeTruthy();
// Associate object with state
s.associate(obj1);
expect(s.associates()).toEqual(1);
s.associate(obj2);
expect(s.associates()).toEqual(2);
expect(s.get()).toBeFalsy();
expect(obj1.x).toBeFalsy();
expect(obj2.x).toBeFalsy();
s.clear();
s.set(true);
expect(s.get()).toBeTruthy();
expect(obj1.x).toBeFalsy();
expect(obj2.x).toBeFalsy();
s.set(false);
expect(s.get()).toBeFalsy();
expect(obj1.x).toBeFalsy();
expect(obj2.x).toBeFalsy();
});
it('should roll', function () {
let s = stateClass.create(['der','alte','mann']);
expect(s.get()).toEqual('der');
s.roll();
expect(s.get()).toEqual('alte');
s.roll();
expect(s.get()).toEqual('mann');
s.roll();
expect(s.get()).toEqual('der');
s.roll();
expect(s.get()).toEqual('alte');
s.set('alte');
expect(s.get()).toEqual('alte');
s.roll();
expect(s.get()).toEqual('mann');
});
});
describe('KorAP.State.Manager', function () {
const el = document.createElement('input');
it('should be initializable', function () {
let sm = stateManagerClass.create(el);
expect(sm).toBeTruthy();
expect(sm.toString()).toEqual("{}");
});
it('should be extensible', function () {
const sm = stateManagerClass.create(el);
expect(sm).toBeTruthy();
const s1 = sm.newState('test', [1,2,3]);
expect(sm.toString()).toEqual("{}");
s1.set(2);
expect(sm.toString()).toEqual("{\"test\":2}");
s1.set(3);
expect(sm.toString()).toEqual("{\"test\":3}");
const s2 = sm.newState('glemm', [true,false]);
let serial = JSON.parse(sm.toString());
expect(serial["test"]).toEqual(3);
expect(serial["glemm"]).toBeUndefined();
s2.set(false);
serial = JSON.parse(sm.toString());
expect(serial["test"]).toEqual(3);
expect(serial["glemm"]).toEqual(false);
});
});
});