expect(frame.state).toBe(frame.POSTWAITING);\r
expect(frame.updateState(4).state).toBe(frame.POSTWAITING);\r
expect(frame.state).toBe(frame.POSTWAITING);\r
+ \r
+ appendEnd(1);\r
+ expect(frame.updateState(1).state).toBe(frame.BEGINNING);\r
+ expect(frame.updateState(1).state).toBe(frame.ENDING);\r
+ expect(frame.updateState(1).state).toBe(frame.POSTWAITING);\r
} );\r
/*無効同値クラスを調べておく (Equivalence partitioning, the following is the invalid partion)*/\r
it("should be this for the value (the invalid partion)", function() {\r
} );\r
afterEach( function() {\r
frame.timelines = [];\r
+ frame.beginList = frame.$list.beginList;\r
+ frame.endList = frame.$list.endList;\r
+ frame.currentFrame = 0;\r
} );\r
/*境界条件を調べておく (limit value analysis)*/\r
it("should be this for the value (limit value analysis)", function() {\r
expect(typeof frame.setFrame).toBe("function");\r
+ expect(frame.currentFrame).toBe(0);\r
\r
frame.setFrame(0);\r
expect(frame.state).toBe(frame.WAITING);\r
+ expect(frame.currentFrame).toBe(0);\r
frame.setFrame(1);\r
expect(frame.state).toBe(frame.WAITING);\r
+ expect(frame.currentFrame).toBe(1);\r
+ \r
+ expect(typeof frame.addEvent).toBe("function");\r
+ expect(typeof frame.addBeginList).toBe("function");\r
+ expect(typeof frame.addEndList).toBe("function");\r
+ \r
+ expect(frame.addBeginList(1).value).toBe(1);\r
+ expect(frame.beginList.next.value).toBe(Number.MAX_VALUE);\r
+ expect(frame.addEndList(1).value).toBe(1);\r
+ expect(frame.endList.next.value).toBe(Number.MAX_VALUE);\r
\r
+\r
+\r
+ } );\r
+ /*同値分割をして、有効同値クラスを調べておく (Equivalence partitioning, the following is the valid partion)*/\r
+ it("should be this for the value (the valid partion)", function() {\r
function appendBegin(num) {\r
frame.state = frame.WAITING;\r
- frame.beginList = {\r
- value: num,\r
- next: frame.beginList\r
- };\r
+ frame.addBeginList(num);\r
};\r
appendBegin(0);\r
+ expect(frame.currentFrame).toBe(0);\r
frame.setFrame(0);\r
+ expect(frame.currentFrame).toBe(0);\r
expect(frame.state).toBe(frame.PLAYING);\r
frame.setFrame(1);\r
+ expect(frame.currentFrame).toBe(1);\r
expect(frame.state).toBe(frame.PLAYING);\r
\r
frame.begin = 0;\r
function appendEnd(num) {\r
frame.state = frame.WAITING;\r
frame.begin = 0;\r
- frame.endList = {\r
- value: num,\r
- next: frame.endList\r
- };\r
+ frame.addEndList(num);\r
};\r
\r
appendEnd(3);\r
expect(frame.state).toBe(frame.PLAYING);\r
frame.setFrame(6);\r
expect(frame.state).toBe(frame.PLAYING);\r
+ \r
+ appendEnd(6);\r
+ frame.setFrame(0);\r
+ expect(frame.state).toBe(frame.PLAYING);\r
+ expect(frame.currentFrame).toBe(0);\r
+ frame.setFrame(1);\r
+ expect(frame.state).toBe(frame.PLAYING);\r
+ expect(frame.currentFrame).toBe(1);\r
+ frame.setFrame(2);\r
+ expect(frame.state).toBe(frame.PLAYING);\r
+ expect(frame.currentFrame).toBe(2);\r
+ frame.setFrame(3);\r
+ expect(frame.state).toBe(frame.POSTWAITING);\r
+ frame.setFrame(4);\r
+ expect(frame.state).toBe(frame.POSTWAITING);\r
+ frame.setFrame(5);\r
+ expect(frame.state).toBe(frame.PLAYING);\r
+ frame.setFrame(6);\r
+ expect(frame.state).toBe(frame.POSTWAITING);\r
+ expect(frame.currentFrame).toBe(6);\r
+ \r
+ /*負荷テスト*/\r
+ for (var i=0;i<10000;++i) {\r
+ frame.setFrame(i);\r
+ }\r
+ \r
+ frame.beginList = base("$frame").$listbeginList;\r
+ frame.endList = base("$frame").$list.endList;\r
+ frame.state = frame.WAITING;\r
+ frame.begin = 0;\r
+ var obj = { name: "", value: 0};\r
+ frame.addEvent("begin", function(evt) { obj.name = "a";});\r
+ frame.beginList = {\r
+ value: 0,\r
+ next: frame.beginList\r
+ };\r
+ frame.setFrame(0);\r
+ expect(frame.currentFrame).toBe(0);\r
+ expect(frame.state).toBe(frame.PLAYING);\r
+ expect(obj.name).toBe("a");\r
+ frame.addEvent("play", function(evt) { obj.name = "b";});\r
+ frame.setFrame(1);\r
+ expect(frame.state).toBe(frame.PLAYING);\r
+ expect(obj.name).toBe("b");\r
+ frame.addEvent("end", function(evt) { obj.value = 1;});\r
+ frame.endList = {\r
+ value: 0,\r
+ next: frame.endList\r
+ };\r
+ frame.setFrame(0);\r
+ expect(frame.currentFrame).toBe(0);\r
+ expect(frame.state).toBe(frame.POSTWAITING);\r
+ expect(obj.value).toBe(1);\r
+ var t = 0;\r
+ frame.addEvent("begin", function(evt) {\r
+ expect(evt.state).toBe(frame.BEGINNING);\r
+ t = 1;\r
+ });\r
+ frame.addEvent("end", function(evt) {\r
+ expect(evt.state).toBe(frame.ENDING);\r
+ t = 2;\r
+ });\r
+ frame.addEvent("play", function(evt) {\r
+ expect(evt.state).toBe(frame.PLAYING);\r
+ t = 3;\r
+ });\r
+ frame.setFrame(0);\r
+ expect(t).toBe(2);\r
+ \r
+ t=0;\r
+ frame.begin = 0;\r
+ frame.state = frame.WAITING;\r
+ expect(frame.getMaxList(12, frame.endList)).toBe(0);\r
+ frame.setFrame(12);\r
+ expect(frame.state).toBe(frame.POSTWAITING);\r
+ expect(t).toBe(2);\r
+ \r
+ /*addBeginListメソッドのチェックなど*/\r
+ expect(frame.addBeginList(1).value).toBe(1);\r
+ expect(frame.addBeginList(0).value).toBe(0);\r
+ expect(frame.beginList.next.value).toBe(1);\r
+ expect(frame.addBeginList(2).value).toBe(2);\r
+ expect(frame.beginList.next.value).toBe(0);\r
+ \r
+ expect(frame.addEndList(1).value).toBe(1);\r
+ expect(frame.addEndList(0).value).toBe(0);\r
+ expect(frame.endList.next.value).toBe(1);\r
+ expect(frame.addEndList(2).value).toBe(2);\r
+ expect(frame.endList.next.value).toBe(0);\r
} );\r
} );\r
} );\r
expect(begin.string).toBe("");\r
expect(begin.isResolved).toBeFalsy();\r
expect(begin.eventTarget).toBe(document.documentElement);\r
- expect(typeof begin.listener).toBe("function");\r
expect(begin.eventOffset).toBe(0);\r
expect(begin.repeat).toBe(0);\r
expect(begin.accessKey).toBe("");\r
it("should be this for the value (the valid partion)", function() {\r
begin.string = " hoge ";\r
expect(begin.string).toBe(" hoge ");\r
+ var $list = begin.$list;\r
+ expect(begin.$list).toBe($list);\r
+ expect(begin.updateList().$list).not.toBe($list);\r
} );\r
/*無効同値クラスを調べておく (Equivalence partitioning, the following is the invalid partion)*/\r
it("should be this for the value (the invalid partion)", function() {\r
expect(begin.parse().begin).toBe(0);\r
begin.string = "-0ms";\r
expect(begin.parse().begin).toBe(0);\r
+ begin.string = "-0ms;-0ms";\r
+ expect(begin.parse().begin).toBe(0);\r
+ begin.string = "-0ms;1";\r
+ expect(begin.parse().begin).toBe(1000*begin.fpms);\r
\r
expect(begin.eventOffset).toBe(0);\r
begin.string = "click";\r
expect(begin.isResolved).toBeFalsy();\r
} );\r
} );\r
- \r
- describe("A listener method in $begin object", function() {\r
- var obj = begin.up();\r
- beforeEach( function() {\r
- begin.string = "";\r
- /*配列は初期化しておく*/\r
- begin.timelines.length = 0;\r
- obj.$activate = begin.$activate.up();\r
- obj.startTime = Date.now();\r
- obj.setFrame(0);\r
- } );\r
- /*境界条件を調べておく (limit value analysis)*/\r
- it("should be this for the value (limit value analysis)", function() {\r
- obj.isResolved = true;\r
- obj.listener();\r
- expect(obj.begin).toBe(0);\r
- \r
- obj.listener( {\r
- timeStamp: Date.now()\r
- } );\r
- expect(obj.begin).toBe(0);\r
- expect(obj.activeTime).toBeGreaterThan(0);\r
- expect(obj.timelines.length).toBe(1);\r
-\r
- obj.isResolved = false;\r
- obj.listener( {\r
- timeStamp: Date.now()\r
- } );\r
- expect(obj.begin).toBe(0);\r
- expect(obj.activeTime).toBeGreaterThan(0);\r
- expect(obj.timelines.length).toBe(1);\r
- /*配列を初期化*/\r
- obj.timelines.length = 0;\r
-\r
- obj.up().mix( {\r
- begin: 1,\r
- eventOffset: 1,\r
- $activate: begin.$activate.up().mix( {\r
- dur: "12"\r
- } )\r
- })\r
- .listener( {\r
- timeStamp: Date.now()\r
- } );\r
- expect(obj.$1.begin).toBe(1);\r
- expect(obj.$1.activeTime).toBe(Math.floor(12000*obj.fpms));\r
- expect(obj.$1.$activate.begin).toBe(obj.$1.begin);\r
- expect(obj.timelines[0]).toBe(obj.$1);\r
- } );\r
- /*同値分割をして、有効同値クラスを調べておく (Equivalence partitioning, the following is the valid partion)*/\r
- it("should be this for the value (the valid partion)", function() {\r
- obj.up().mix( {\r
- begin: 1,\r
- eventOffset: 1,\r
- $activate: begin.$activate.up().mix( {\r
- end: begin.$activate.end.up().mix( {\r
- string: "1s"\r
- } )\r
- } )\r
- })\r
- .listener( {\r
- timeStamp: Date.now()\r
- } );\r
- expect(obj.$1.begin).toBe(1);\r
- expect(obj.$1.activeTime).toBe(Math.floor(1000*obj.fpms) - 1);\r
- expect(obj.$1.$activate.begin).toBe(obj.$1.begin);\r
- expect(obj.timelines[0]).toBe(obj.$1);\r
-\r
- obj.up().mix( {\r
- begin: 1,\r
- eventOffset: 1,\r
- $activate: begin.$activate.up().mix( {\r
- end: begin.$activate.end.up().mix( {\r
- string: "1s"\r
- } )\r
- } )\r
- })\r
- .listener( {\r
- timeStamp: Date.now()\r
- } );\r
- expect(obj.$1.begin).toBe(1);\r
- expect(obj.$1.activeTime).toBe(Math.floor(1000*obj.fpms) - 1);\r
- expect(obj.$1.$activate.begin).toBe(obj.$1.begin);\r
- expect(obj.timelines[1]).toBe(obj.$1);\r
- obj.$1.listener( {\r
- timeStamp: (Date.now() + 500)\r
- } );\r
- expect(obj.$1.begin).toBe(1);\r
- expect(obj.$1.activeTime).toBe(Math.floor(1000*obj.fpms) - 1);\r
- expect(obj.$1.$activate.begin).toBe(obj.$1.begin);\r
- expect(obj.timelines[1]).toBe(obj.$1);\r
- } );\r
- /*無効同値クラスを調べておく (Equivalence partitioning, the following is the invalid partion)*/\r
- it("should be this for the value (the invalid partion)", function() {\r
- } );\r
- } );\r
} );\r
describe("A $end object", function() {\r
var end = base("$frame").$begin.$end.up();\r
end.string = null;\r
expect(end.up().call()).toBeNull();\r
} );\r
-\r
- describe("A listener method in $end object", function() {\r
- var obj,\r
- begin = base("$frame").$begin;\r
- beforeEach( function() {\r
- end.string = "";\r
- /*配列は初期化しておく*/\r
- end.timelines.length = 0;\r
- obj = end.up();\r
- obj.$begin = begin.up().mix( {\r
- begin: 12,\r
- activeTime: 120\r
- } );\r
- obj.$begin.$activate = begin.$activate.up();\r
- obj.addLine(obj.$begin);\r
- } );\r
- /*境界条件を調べておく (limit value analysis)*/\r
- it("should be this for the value (limit value analysis)", function() {\r
- expect(obj.timelines[0]).toBe(obj.$begin);\r
- expect(obj.timelines[0]).not.toBe(obj);\r
- obj.listener();\r
- expect(obj.timelines[0]).not.toBe(obj.$begin);\r
-\r
- obj.addLine(obj.$begin.mix( {\r
- begin: 12,\r
- activeTime: 120\r
- } ) );\r
- obj.listener({\r
- timeStamp: (Date.now() + 12)\r
- } );\r
- expect(obj.timelines[0]).not.toBe(obj.$begin);\r
- } );\r
- /*同値分割をして、有効同値クラスを調べておく (Equivalence partitioning, the following is the valid partion)*/\r
- it("should be this for the value (the valid partion)", function() {\r
- obj.$begin.$activate.begin = 0;\r
- obj.mix( {\r
- string: "event"\r
- } ).parse();\r
- obj.listener({\r
- timeStamp: (Date.now() + 120)\r
- } );\r
- expect(obj.timelines[0]).not.toBe(obj.$begin);\r
- expect(obj.begin).toBe(0);\r
- expect(obj.$begin.activeTime).toBe(0);\r
-\r
- obj.addLine(obj.$begin.mix( {\r
- begin: 12,\r
- activeTime: 120\r
- } ) );\r
- obj.$begin.$activate.begin = 0;\r
- obj.mix( {\r
- string: "event+1000ms"\r
- } ).parse();\r
- obj.listener({\r
- timeStamp: (Date.now() + 12)\r
- } );\r
- expect(obj.timelines[0]).toBe(obj.$begin);\r
- expect(obj.begin).toBe(Math.ceil(1000*obj.fpms));\r
- expect(obj.$begin.activeTime).toBe(Math.ceil(1000*obj.fpms));\r
- } );\r
- /*無効同値クラスを調べておく (Equivalence partitioning, the following is the invalid partion)*/\r
- it("should be this for the value (the invalid partion)", function() {\r
- } );\r
- } )\r
} );\r
describe("A $activate object", function() {\r
var act = base("$frame").$begin.$activate.up();\r
} );\r
/*同値分割をして、有効同値クラスを調べておく (Equivalence partitioning, the following is the valid partion)*/\r
it("should be this for the value (the valid partion)", function() {\r
- expect(act.resolvedTime()).toBe((+new Date()));\r
+ expect(act.resolvedTime()).not.toBe(0);\r
\r
/*Activate Duration = dur*/\r
act.up("$b");\r
expect(abc).toBe(act.$b.simpleDur);\r
act.dur = null;\r
expect(act.up().call()).toBeNull();\r
- \r
- /*AD = end -begin*/\r
- act.begin = 1;\r
- act.up("$eb").end = act.end.up().mix( {string: "120ms" } );\r
- expect( act.$eb.mix( {\r
- dur: "indefinite",\r
- simpleDur: act.simpleDur,\r
- repeatCount: 12,\r
- repeatDur: null,\r
- } ).call() ).toBe(Math.floor(120*act.fpms) - 1);\r
- expect( act.$eb.mix( {\r
- dur: "12",\r
- repeatCount: "indefinite",\r
- repeatDur: null,\r
- } ).call() ).toBe(Math.floor(120*act.fpms) - 1);\r
- expect( act.$eb.mix( {\r
- dur: "12",\r
- simpleDur: act.simpleDur,
- repeatCount: null,\r
- repeatDur: "indefinite",\r
- } ).call() ).toBe(Math.floor(120*act.fpms) - 1);\r
- act.$eb.end *= 3;\r
- expect( act.$eb.mix( {\r
- dur: "12",\r
- simpleDur: act.simpleDur,
- repeatCount: "indefinite",\r
- repeatDur: "indefinite",\r
- } ).call() ).toBe(Math.floor(120*act.fpms)*3 - 1);\r
\r
- /*AD = Min(dur, end - begin)*/\r
- act.up("$c").end = act.end.up().mix( { string: "12" } );\r
+ act.up("$c");\r
act.$c.mix( {\r
dur: "10",\r
simpleDur: act.simpleDur,
repeatCount: null,\r
repeatDur: null\r
} );\r
- expect(act.$c.call()).toBe(Math.floor(12000*act.fpms) - 1);\r
- expect(act.$c.simpleDur).toBe(Math.floor(15000*act.fpms));\r
+ expect(act.$c.call()).toBe(Math.floor(15000*act.fpms));\r
\r
- /*AD = Min(repeatCount*dur, end - begin)*/\r
- expect(act.$c.end).toBe(Math.floor(12000*act.fpms));\r
+ /*AD = repeatCount*dur*/\r
act.$c.mix( {\r
dur: "10",\r
simpleDur: act.simpleDur,
repeatCount: 2,\r
repeatDur: null\r
} );\r
- expect(act.$c.call()).toBe(Math.floor(12000*act.fpms) - 1);\r
+ act.$c.call();\r
expect(act.$c.simpleDur).toBe(Math.floor(10000*act.fpms));\r
act.$c.mix( {\r
dur: "10",\r
expect(act.$c.call()).toBe(Math.floor(10000*act.fpms));\r
expect(act.$c.simpleDur).toBe(Math.floor(10000*act.fpms));\r
\r
- /*AD = Min(repeatDur, end - begin)*/\r
+ /*AD = repeatDur*/\r
act.$c.mix( {\r
dur: "indefinite",\r
simpleDur: act.simpleDur,
repeatCount: 2,\r
repeatDur: "15"\r
} );\r
- expect(act.$c.call()).toBe(Math.floor(12000*act.fpms) - 1);\r
+ act.$c.call();\r
expect(act.$c.simpleDur).toBeNull();\r
act.$c.mix( {\r
dur: "indefinite",\r
repeatCount: null,\r
repeatDur: "15"\r
} );\r
- expect(act.$c.call()).toBe(Math.floor(12000*act.fpms) - 1);\r
+ act.$c.call();\r
expect(act.$c.simpleDur).toBe(Math.floor(10000*act.fpms));\r
act.$c.mix( {\r
dur: "10",\r
expect(act.$c.call()).toBe(Math.floor(11000*act.fpms));\r
expect(act.$c.simpleDur).toBe(Math.floor(10000*act.fpms));\r
\r
- /*AD = Min(repeatCount*d, repeatDur, end - begin)*/\r
+ /*AD = Min(repeatCount*d, repeatDur)*/\r
act.$c.mix( {\r
dur: "10",\r
simpleDur: act.simpleDur,
repeatCount: 2,\r
repeatDur: "15"\r
} );\r
- expect(act.$c.call()).toBe(Math.floor(12000*act.fpms) - 1);\r
+ act.$c.call();\r
expect(act.$c.simpleDur).toBe(Math.floor(10000*act.fpms));\r
act.$c.mix( {\r
dur: "10",\r
act.repeatDur = null;\r
act.repeatCount = "indefinite";\r
act.dur = "1";\r
- expect(act.call()).toBe(0);\r
+ expect(act.call()).toBeNull();\r
act.repeatCount = null;\r
act.repeatDur = "indefinite";\r
act.dur = "1";\r
- expect(act.call()).toBe(0);\r
+ expect(act.call()).toBeNull();\r
act.repeatDur = "indefinite";\r
act.repeatCount = "indefinite";\r
act.dur = "1";\r
- expect(act.call()).toBe(0);\r
+ expect(act.call()).toBeNull();\r
} );\r
/*無効同値クラスを調べておく (Equivalence partitioning, the following is the invalid partion)*/\r
it("should be this for the value (the invalid partion)", function() {\r
function check(attrName, num) {\r
s.setAttribute(attrName, "1");\r
expect(s.hasAttributeNS(null, attrName)).toBeTruthy();\r
- var l = attr.push(s);\r
+ var fr = attr.push(s);\r
expect(attr.element).toBe(p);\r
var timelines = base("$frame").timelines;\r
expect(timelines.length).toBe(num);\r
var line = timelines[num-1];\r
- expect(line.string).toBe("0");\r
- expect(line).toBe(l); //タイムラインのオブジェクトを返す\r
- var act = line.$activate;\r
+ expect(line).not.toBe(fr);\r
+ var act = fr.$activate;\r
expect(act.dur).toBeNull();\r
- expect(act.end).toBe(0);\r
expect(act.repeatCount).toBeNull();\r
expect(act.repeatDur).toBeNull();\r
expect(act.min).toBe("0");\r
function check2(attrName, value) {\r
s.setAttribute(attrName, value);\r
expect(s.hasAttributeNS(null, attrName)).toBeTruthy();\r
- attr.push(s);\r
+ var fr = attr.push(s);\r
expect(attr.element).toBe(p);\r
var timelines = base("$frame").timelines;\r
var line = timelines[timelines.length-1];\r
- expect(line.string).toBe(values[0]);\r
- var act = line.$activate;\r
+ expect(fr.string).toBe(values[0]);\r
+ var act = fr.$activate;\r
expect(act.dur).toBe(values[1]);\r
- expect(act.end).toBe(values[2]);\r
expect(act.repeatCount).toBe(values[3]);\r
expect(act.repeatDur).toBe(values[4]);\r
expect(act.min).toBe(values[5]);\r
expect($set.element).toBeNull();\r
} );\r
} );\r
- describe("An checkEnd method", function() {\r
- var $set, ele, frame;\r
- beforeEach( function() {\r
- $set = base("$calcMode").$attribute.$setElement.up();\r
- var p = document.createElementNS("http://www.w3.org/2000/svg", "g");\r
- ele = document.createElementNS("http://www.w3.org/2000/svg", "set");\r
- p.appendChild(ele);\r
- frame = base("$frame");\r
- } );\r
- /*境界条件を調べておく (limit value analysis)*/\r
- it("should be this for the value (limit value analysis)", function() {\r
- expect($set.checkEnd()).toBeFalsy();\r
- $set.init(ele);\r
- frame.setFrame(0);\r
- frame.$endFrame.setFrame(0);\r
- expect($set.checkEnd()).toBeFalsy();\r
- } );\r
- /*同値分割をして、有効同値クラスを調べておく (Equivalence partitioning, the following is the valid partion)*/\r
- it("should be this for the value (the valid partion)", function() {\r
- ele.setAttributeNS(null, "dur", "1s");\r
- ele.setAttributeNS(null, "attributeName", "fill");\r
- ele.setAttributeNS(null, "to", "red");\r
- $set.init(ele);\r
- expect($set.checkEnd(0)).toBeFalsy();\r
- expect($set.checkEnd(24)).toBeFalsy();\r
- $set.state = "playing";\r
- expect($set.checkEnd(25)).toBeTruthy();\r
- expect($set.state).toBe("idling");\r
- expect($set.checkEnd(26)).toBeFalsy();\r
- } );\r
- /*無効同値クラスを調べておく (Equivalence partitioning, the following is the invalid partion)*/\r
- it("should be this for the value (the invalid partion)", function() {\r
- $set.timeline.isResolved = false;\r
- expect($set.checkEnd(0)).toBeFalsy();\r
- $set.timeline.activeTime = null;\r
- expect($set.checkEnd(0)).toBeFalsy();\r
- $set.timeline = null;\r
- expect(function() {\r
- $set.checkEnd(0);\r
- } ).toThrow();\r
- } );\r
- } );\r
\r
describe("An init method", function() {\r
var $set, ele, frame;\r
ele = document.createElementNS("http://www.w3.org/2000/svg", "set");\r
p.appendChild(ele);\r
frame = base("$frame");\r
- frame.timelines.length = frame.$endFrame.timelines.length = 0; //配列の初期化\r
+ frame.timelines.length = 0; //配列の初期化\r
frame.startTime = Date.now();\r
frame.setFrame(0);\r
- frame.$endFrame.setFrame(0);\r
} );\r
afterEach( function() {\r
$set.isCSS = false;\r
/*境界条件を調べておく (limit value analysis)*/\r
it("should be this for the value (limit value analysis)", function() {\r
expect($set.isEnd).toBeFalsy();\r
- expect($set.state).toBe("idling");\r
ele.setAttributeNS(null, "dur", "1s");\r
ele.setAttributeNS(null, "attributeName", "fill");\r
ele.setAttributeNS(null, "to", "red");\r
$set.isCSS = false;\r
expect($set.timeline).not.toBe(frame.$begin);\r
frame.setFrame(0);\r
- frame.$endFrame.setFrame(0);\r
expect(ele.parentNode.getAttributeNS(null, "fill")).toBe("red");\r
- expect($set.state).toBe("playing");\r
\r
+ var line = $set.timeline;\r
+ expect(line.$list.state).toBe(line.$list.PLAYING);\r
+ console.log(frame);\r
frame.setFrame(24);\r
- frame.$endFrame.setFrame(24);\r
+ expect(line.$list.state).toBe(line.$list.POSTWAITING);\r
expect(ele.parentNode.hasAttributeNS(null, "fill")).toBeFalsy();\r
- expect($set.state).toBe("idling");\r
} );\r
/*同値分割をして、有効同値クラスを調べておく (Equivalence partitioning, the following is the valid partion)*/\r
it("should be this for the value (the valid partion)", function() {\r
$set.isCSS = false;\r
var f = function(num) {\r
frame.setFrame(num);\r
- frame.$endFrame.setFrame(num);\r
expect(ele.parentNode.getAttributeNS(null, "fill") || null).toBeNull();\r
}\r
f(0);\r
f(1);\r
f(23);\r
frame.setFrame(24);\r
- frame.$endFrame.setFrame(24);\r
expect(ele.parentNode.getAttributeNS(null, "fill")).toBe("red");\r
frame.setFrame(25);\r
- frame.$endFrame.setFrame(25);\r
expect(ele.parentNode.getAttributeNS(null, "fill")).toBe("red");\r
f(48);\r
f(49);\r
f(1);\r
f(23);\r
frame.setFrame(24);\r
- frame.$endFrame.setFrame(24);\r
expect(ele.parentNode.getAttributeNS(null, "fill")).toBe("red");\r
frame.setFrame(25);\r
- frame.$endFrame.setFrame(25);\r
expect(ele.parentNode.getAttributeNS(null, "fill")).toBe("red");\r
frame.setFrame(48);\r
- frame.$endFrame.setFrame(48);\r
expect(ele.parentNode.getAttributeNS(null, "fill") || null).toBe("red");\r
frame.setFrame(49);\r
- frame.$endFrame.setFrame(49);\r
expect(ele.parentNode.getAttributeNS(null, "fill") || null).toBe("red");\r
ele.setAttributeNS(null, "begin", "1s");\r
ele.setAttributeNS(null, "attributeName", "fill");\r
$set.isCSS = false;\r
var f = function(num) {\r
frame.setFrame(num);\r
- frame.$endFrame.setFrame(num);\r
expect(ele.parentNode.getAttributeNS(null, "fill") || null).toBe("red");\r
}\r
f(0);\r
frame.timelines.length = 0;\r
frame.startTime = Date.now();\r
frame.setFrame(0);\r
- frame.$endFrame.setFrame(0);\r
} );\r
/*境界条件を調べておく (limit value analysis)*/\r
it("should be this for the value (limit value analysis)", function() {\r
$animate.init(ele);\r
expect($animate.isCSS).toBeFalsy();\r
frame.setFrame(0);\r
- frame.$endFrame.setFrame(0);\r
var p = ele.parentNode;\r
/*getAttributeNSメソッドは、IE11では空文字列を返す(DOM 2に準拠)のに対して、\r
* 他のブラウザではnullを返すため、その対策をする*/\r
\r
function f(fr, result) {\r
frame.setFrame(fr);\r
- frame.$endFrame.setFrame(fr);\r
expect(p.getAttributeNS(null, "d") || "").toBe(result);\r
};\r
\r
to = attr[2];\r
function g(fr, result) {\r
frame.setFrame(fr);\r
- frame.$endFrame.setFrame(fr);\r
expect(p.style.getPropertyValue(attrName) || p.getAttribute(attrName) || "").toBe(result);\r
};\r
\r
\r
function f(fr, result) {\r
frame.setFrame(fr);\r
- frame.$endFrame.setFrame(fr);\r
expect(p.getAttributeNS(null, "d")).toBe(result);\r
};\r
\r
( function(attrName) {\r
function g(fr, result) {\r
frame.setFrame(fr);\r
- frame.$endFrame.setFrame(fr);\r
expect(p.style.getPropertyValue(attrName)).toBe(result);\r
};\r
\r
\r
function f(fr, result) {\r
frame.setFrame(fr);\r
- frame.$endFrame.setFrame(fr);\r
expect(p.getAttributeNS(null, "d") || null).toBe(result);\r
};\r
f(0, null);\r
\r
f = function (fr, result, attr) {\r
frame.setFrame(fr);\r
- frame.$endFrame.setFrame(fr);\r
expect(p.style.getPropertyValue(attr).replace(/\s/g, "")).toBe(result.replace(/\s/g, ""));\r
};\r
} );\r
\r
function f (fr, result, attr) {\r
frame.setFrame(fr);\r
- frame.$endFrame.setFrame(fr);\r
expect(ele.parentNode.getAttributeNS(null,attr)).toBe(result);\r
};\r
f(0, "#83.0C", "fi");\r
expect(isFiredBeginEvent).toBeTruthy();\r
} );\r
frame.setFrame(0);\r
- frame.$endFrame.setFrame(0);\r
expect(frame.first).toBeNull();\r
frame.setFrame(0);\r
- frame.$endFrame.setFrame(0);\r
expect(frame.first).toBeNull();\r
\r
frame.timelines = [];\r
};\r
expect(frame.first).toEqual(a);\r
frame.setFrame(11);\r
- frame.$endFrame.setFrame(11);\r
expect(frame.first).toEqual( {frame: 12,\r
eventType: "end",\r
target: ele,\r
};\r
expect(frame.first).toEqual(a);\r
frame.setFrame(0);\r
- frame.$endFrame.setFrame(0);\r
expect(frame.first).toEqual(a);\r
frame.setFrame(1);\r
- frame.$endFrame.setFrame(1);\r
a = a.next;\r
expect(frame.first).toEqual(a);\r
frame.setFrame(5);\r
- frame.$endFrame.setFrame(5);\r
expect(frame.first).toEqual(a.next);\r
\r
ele.addEventListener("repeatEvent", function(evt) {\r
target: ele\r
}) );\r
frame.setFrame(9);\r
- frame.$endFrame.setFrame(9);\r
expect(frame.first).toEqual({\r
frame: 13,\r
eventType: "repeat",\r
frame.timelines.length = 0;\r
frame.startTime = Date.now();\r
frame.setFrame(0);\r
- frame.$endFrame.setFrame(0);\r
} );\r
afterEach( function() {\r
$animate.numberOfList = -1;\r
frame.timelines.length = 0;\r
frame.startTime = Date.now();\r
frame.setFrame(0);\r
- frame.$endFrame.setFrame(0);\r
} );\r
afterEach( function() {\r
$animate.numberOfList = -1;\r
frame.timelines.length = 0;\r
frame.startTime = Date.now();\r
frame.setFrame(0);\r
- frame.$endFrame.setFrame(0);\r
} );\r
afterEach( function() {\r
$animate.numberOfList = -1;\r
frame.pauseAnimation();\r
frame.timelines.length = 0; //配列の初期化\r
frame.setFrame(0);\r
- frame.$endFrame.setFrame(0);\r
} );\r
/*境界条件を調べておく (limit value analysis)*/\r
it("should be this for the value (limit value analysis)", function() {\r
$animate.init(ele);\r
$animate.isCSS = false;\r
expect(p.getAttributeNS(null, "fill") || null).toBeNull();\r
- expect($animate.state).toBe("idling");\r
evt = ele.ownerDocument.createEvent("MouseEvents");\r
evt.initMouseEvent("beginEvent",true, true, window, 0, 0, 0, 0, 0, false, false, false, false,0, ele);\r
- expect($animate.state).toBe("idling");\r
p.dispatchEvent(evt);\r
- expect($animate.state).toBe("idling");\r
expect(p.getAttributeNS(null, "fill") || null).toBeNull();\r
\r
evt = ele.ownerDocument.createEvent("MouseEvents");\r
evt.initMouseEvent("mousedown",true, true, window, 0, 0, 0, 0, 0, false, false, false, false,0, p);\r
frame.setFrame(frame.currentFrame);\r
- frame.$endFrame.setFrame(frame.currentFrame);\r
expect($animate.isEnd).toBeFalsy();\r
- expect($animate.state).toBe("idling");\r
p.dispatchEvent(evt);\r
frame.setFrame(frame.currentFrame + 1);\r
- frame.$endFrame.setFrame(frame.currentFrame + 1);\r
- expect($animate.state).toBe("playing");\r
frame.setFrame(frame.currentFrame + 24);\r
- frame.$endFrame.setFrame(frame.currentFrame + 24);\r
- expect($animate.state).toBe("idling");\r
expect(evt.target.getAttributeNS(null, "fill") || null).toBe("rgb(10, 10, 1)");\r
} );\r
} );\r
frame = base("$frame");\r
frame.timelines.length = 0; //配列の初期化\r
frame.setFrame(0);\r
- frame.$endFrame.setFrame(0);\r
ele.setAttributeNS(null, "begin", "indefinite");\r
ele.setAttributeNS(null, "dur", "1s");\r
ele.setAttributeNS(null, "dur", "1s");\r