OLD | NEW |
1 dart_library.library('DeltaBlue', null, /* Imports */[ | 1 dart_library.library('DeltaBlue', null, /* Imports */[ |
2 "dart/_runtime", | 2 "dart/_runtime", |
3 'BenchmarkBase', | 3 'BenchmarkBase', |
4 'dart/core' | 4 'dart/core' |
5 ], /* Lazy imports */[ | 5 ], /* Lazy imports */[ |
6 ], function(exports, dart, BenchmarkBase, core) { | 6 ], function(exports, dart, BenchmarkBase, core) { |
7 'use strict'; | 7 'use strict'; |
8 let dartx = dart.dartx; | 8 let dartx = dart.dartx; |
9 function main() { | 9 function main() { |
10 new DeltaBlue().report(); | 10 new DeltaBlue().report(); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 this.chooseMethod(dart.as(mark, core.int)); | 73 this.chooseMethod(dart.as(mark, core.int)); |
74 if (!dart.notNull(this.isSatisfied())) { | 74 if (!dart.notNull(this.isSatisfied())) { |
75 if (dart.equals(this.strength, REQUIRED)) { | 75 if (dart.equals(this.strength, REQUIRED)) { |
76 core.print("Could not satisfy a required constraint!"); | 76 core.print("Could not satisfy a required constraint!"); |
77 } | 77 } |
78 return null; | 78 return null; |
79 } | 79 } |
80 this.markInputs(dart.as(mark, core.int)); | 80 this.markInputs(dart.as(mark, core.int)); |
81 let out = this.output(); | 81 let out = this.output(); |
82 let overridden = out.determinedBy; | 82 let overridden = out.determinedBy; |
83 if (overridden != null) | 83 if (overridden != null) overridden.markUnsatisfied(); |
84 overridden.markUnsatisfied(); | |
85 out.determinedBy = this; | 84 out.determinedBy = this; |
86 if (!dart.notNull(exports.planner.addPropagate(this, dart.as(mark, core.in
t)))) | 85 if (!dart.notNull(exports.planner.addPropagate(this, dart.as(mark, core.in
t)))) core.print("Cycle encountered"); |
87 core.print("Cycle encountered"); | |
88 out.mark = dart.as(mark, core.int); | 86 out.mark = dart.as(mark, core.int); |
89 return overridden; | 87 return overridden; |
90 } | 88 } |
91 destroyConstraint() { | 89 destroyConstraint() { |
92 if (dart.notNull(this.isSatisfied())) | 90 if (dart.notNull(this.isSatisfied())) exports.planner.incrementalRemove(th
is); |
93 exports.planner.incrementalRemove(this); | |
94 this.removeFromGraph(); | 91 this.removeFromGraph(); |
95 } | 92 } |
96 isInput() { | 93 isInput() { |
97 return false; | 94 return false; |
98 } | 95 } |
99 } | 96 } |
100 dart.setSignature(Constraint, { | 97 dart.setSignature(Constraint, { |
101 constructors: () => ({Constraint: [Constraint, [Strength]]}), | 98 constructors: () => ({Constraint: [Constraint, [Strength]]}), |
102 methods: () => ({ | 99 methods: () => ({ |
103 addConstraint: [dart.void, []], | 100 addConstraint: [dart.void, []], |
(...skipping 19 matching lines...) Expand all Loading... |
123 isSatisfied() { | 120 isSatisfied() { |
124 return this.satisfied; | 121 return this.satisfied; |
125 } | 122 } |
126 markInputs(mark) {} | 123 markInputs(mark) {} |
127 output() { | 124 output() { |
128 return this.myOutput; | 125 return this.myOutput; |
129 } | 126 } |
130 recalculate() { | 127 recalculate() { |
131 this.myOutput.walkStrength = this.strength; | 128 this.myOutput.walkStrength = this.strength; |
132 this.myOutput.stay = !dart.notNull(this.isInput()); | 129 this.myOutput.stay = !dart.notNull(this.isInput()); |
133 if (dart.notNull(this.myOutput.stay)) | 130 if (dart.notNull(this.myOutput.stay)) this.execute(); |
134 this.execute(); | |
135 } | 131 } |
136 markUnsatisfied() { | 132 markUnsatisfied() { |
137 this.satisfied = false; | 133 this.satisfied = false; |
138 } | 134 } |
139 inputsKnown(mark) { | 135 inputsKnown(mark) { |
140 return true; | 136 return true; |
141 } | 137 } |
142 removeFromGraph() { | 138 removeFromGraph() { |
143 if (this.myOutput != null) | 139 if (this.myOutput != null) this.myOutput.removeConstraint(this); |
144 this.myOutput.removeConstraint(this); | |
145 this.satisfied = false; | 140 this.satisfied = false; |
146 } | 141 } |
147 } | 142 } |
148 dart.setSignature(UnaryConstraint, { | 143 dart.setSignature(UnaryConstraint, { |
149 constructors: () => ({UnaryConstraint: [UnaryConstraint, [Variable, Strength
]]}), | 144 constructors: () => ({UnaryConstraint: [UnaryConstraint, [Variable, Strength
]]}), |
150 methods: () => ({ | 145 methods: () => ({ |
151 addToGraph: [dart.void, []], | 146 addToGraph: [dart.void, []], |
152 chooseMethod: [dart.void, [core.int]], | 147 chooseMethod: [dart.void, [core.int]], |
153 isSatisfied: [core.bool, []], | 148 isSatisfied: [core.bool, []], |
154 markInputs: [dart.void, [core.int]], | 149 markInputs: [dart.void, [core.int]], |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 input() { | 215 input() { |
221 return this.direction == FORWARD ? this.v1 : this.v2; | 216 return this.direction == FORWARD ? this.v1 : this.v2; |
222 } | 217 } |
223 output() { | 218 output() { |
224 return this.direction == FORWARD ? this.v2 : this.v1; | 219 return this.direction == FORWARD ? this.v2 : this.v1; |
225 } | 220 } |
226 recalculate() { | 221 recalculate() { |
227 let ihn = this.input(), out = this.output(); | 222 let ihn = this.input(), out = this.output(); |
228 out.walkStrength = Strength.weakest(this.strength, ihn.walkStrength); | 223 out.walkStrength = Strength.weakest(this.strength, ihn.walkStrength); |
229 out.stay = ihn.stay; | 224 out.stay = ihn.stay; |
230 if (dart.notNull(out.stay)) | 225 if (dart.notNull(out.stay)) this.execute(); |
231 this.execute(); | |
232 } | 226 } |
233 markUnsatisfied() { | 227 markUnsatisfied() { |
234 this.direction = NONE; | 228 this.direction = NONE; |
235 } | 229 } |
236 inputsKnown(mark) { | 230 inputsKnown(mark) { |
237 let i = this.input(); | 231 let i = this.input(); |
238 return i.mark == mark || dart.notNull(i.stay) || i.determinedBy == null; | 232 return i.mark == mark || dart.notNull(i.stay) || i.determinedBy == null; |
239 } | 233 } |
240 removeFromGraph() { | 234 removeFromGraph() { |
241 if (this.v1 != null) | 235 if (this.v1 != null) this.v1.removeConstraint(this); |
242 this.v1.removeConstraint(this); | 236 if (this.v2 != null) this.v2.removeConstraint(this); |
243 if (this.v2 != null) | |
244 this.v2.removeConstraint(this); | |
245 this.direction = NONE; | 237 this.direction = NONE; |
246 } | 238 } |
247 } | 239 } |
248 dart.setSignature(BinaryConstraint, { | 240 dart.setSignature(BinaryConstraint, { |
249 constructors: () => ({BinaryConstraint: [BinaryConstraint, [Variable, Variab
le, Strength]]}), | 241 constructors: () => ({BinaryConstraint: [BinaryConstraint, [Variable, Variab
le, Strength]]}), |
250 methods: () => ({ | 242 methods: () => ({ |
251 chooseMethod: [dart.void, [core.int]], | 243 chooseMethod: [dart.void, [core.int]], |
252 addToGraph: [dart.void, []], | 244 addToGraph: [dart.void, []], |
253 isSatisfied: [core.bool, []], | 245 isSatisfied: [core.bool, []], |
254 markInputs: [dart.void, [core.int]], | 246 markInputs: [dart.void, [core.int]], |
(...skipping 11 matching lines...) Expand all Loading... |
266 this.offset = offset; | 258 this.offset = offset; |
267 super.BinaryConstraint(src, dest, strength); | 259 super.BinaryConstraint(src, dest, strength); |
268 } | 260 } |
269 addToGraph() { | 261 addToGraph() { |
270 super.addToGraph(); | 262 super.addToGraph(); |
271 this.scale.addConstraint(this); | 263 this.scale.addConstraint(this); |
272 this.offset.addConstraint(this); | 264 this.offset.addConstraint(this); |
273 } | 265 } |
274 removeFromGraph() { | 266 removeFromGraph() { |
275 super.removeFromGraph(); | 267 super.removeFromGraph(); |
276 if (this.scale != null) | 268 if (this.scale != null) this.scale.removeConstraint(this); |
277 this.scale.removeConstraint(this); | 269 if (this.offset != null) this.offset.removeConstraint(this); |
278 if (this.offset != null) | |
279 this.offset.removeConstraint(this); | |
280 } | 270 } |
281 markInputs(mark) { | 271 markInputs(mark) { |
282 super.markInputs(mark); | 272 super.markInputs(mark); |
283 this.scale.mark = this.offset.mark = mark; | 273 this.scale.mark = this.offset.mark = mark; |
284 } | 274 } |
285 execute() { | 275 execute() { |
286 if (this.direction == FORWARD) { | 276 if (this.direction == FORWARD) { |
287 this.v2.value = dart.notNull(this.v1.value) * dart.notNull(this.scale.va
lue) + dart.notNull(this.offset.value); | 277 this.v2.value = dart.notNull(this.v1.value) * dart.notNull(this.scale.va
lue) + dart.notNull(this.offset.value); |
288 } else { | 278 } else { |
289 this.v1.value = ((dart.notNull(this.v2.value) - dart.notNull(this.offset
.value)) / dart.notNull(this.scale.value))[dartx.truncate](); | 279 this.v1.value = ((dart.notNull(this.v2.value) - dart.notNull(this.offset
.value)) / dart.notNull(this.scale.value))[dartx.truncate](); |
290 } | 280 } |
291 } | 281 } |
292 recalculate() { | 282 recalculate() { |
293 let ihn = this.input(), out = this.output(); | 283 let ihn = this.input(), out = this.output(); |
294 out.walkStrength = Strength.weakest(this.strength, ihn.walkStrength); | 284 out.walkStrength = Strength.weakest(this.strength, ihn.walkStrength); |
295 out.stay = dart.notNull(ihn.stay) && dart.notNull(this.scale.stay) && dart
.notNull(this.offset.stay); | 285 out.stay = dart.notNull(ihn.stay) && dart.notNull(this.scale.stay) && dart
.notNull(this.offset.stay); |
296 if (dart.notNull(out.stay)) | 286 if (dart.notNull(out.stay)) this.execute(); |
297 this.execute(); | |
298 } | 287 } |
299 } | 288 } |
300 dart.setSignature(ScaleConstraint, { | 289 dart.setSignature(ScaleConstraint, { |
301 constructors: () => ({ScaleConstraint: [ScaleConstraint, [Variable, Variable
, Variable, Variable, Strength]]}), | 290 constructors: () => ({ScaleConstraint: [ScaleConstraint, [Variable, Variable
, Variable, Variable, Strength]]}), |
302 methods: () => ({execute: [dart.void, []]}) | 291 methods: () => ({execute: [dart.void, []]}) |
303 }); | 292 }); |
304 class EqualityConstraint extends BinaryConstraint { | 293 class EqualityConstraint extends BinaryConstraint { |
305 EqualityConstraint(v1, v2, strength) { | 294 EqualityConstraint(v1, v2, strength) { |
306 super.BinaryConstraint(v1, v2, strength); | 295 super.BinaryConstraint(v1, v2, strength); |
307 } | 296 } |
(...skipping 13 matching lines...) Expand all Loading... |
321 this.determinedBy = null; | 310 this.determinedBy = null; |
322 this.mark = 0; | 311 this.mark = 0; |
323 this.walkStrength = WEAKEST; | 312 this.walkStrength = WEAKEST; |
324 this.stay = true; | 313 this.stay = true; |
325 } | 314 } |
326 addConstraint(c) { | 315 addConstraint(c) { |
327 this.constraints[dartx.add](c); | 316 this.constraints[dartx.add](c); |
328 } | 317 } |
329 removeConstraint(c) { | 318 removeConstraint(c) { |
330 this.constraints[dartx.remove](c); | 319 this.constraints[dartx.remove](c); |
331 if (dart.equals(this.determinedBy, c)) | 320 if (dart.equals(this.determinedBy, c)) this.determinedBy = null; |
332 this.determinedBy = null; | |
333 } | 321 } |
334 } | 322 } |
335 dart.setSignature(Variable, { | 323 dart.setSignature(Variable, { |
336 constructors: () => ({Variable: [Variable, [core.String, core.int]]}), | 324 constructors: () => ({Variable: [Variable, [core.String, core.int]]}), |
337 methods: () => ({ | 325 methods: () => ({ |
338 addConstraint: [dart.void, [Constraint]], | 326 addConstraint: [dart.void, [Constraint]], |
339 removeConstraint: [dart.void, [Constraint]] | 327 removeConstraint: [dart.void, [Constraint]] |
340 }) | 328 }) |
341 }); | 329 }); |
342 class Planner extends core.Object { | 330 class Planner extends core.Object { |
343 Planner() { | 331 Planner() { |
344 this.currentMark = 0; | 332 this.currentMark = 0; |
345 } | 333 } |
346 incrementalAdd(c) { | 334 incrementalAdd(c) { |
347 let mark = this.newMark(); | 335 let mark = this.newMark(); |
348 for (let overridden = c.satisfy(mark); overridden != null; overridden = ov
erridden.satisfy(mark)) | 336 for (let overridden = c.satisfy(mark); overridden != null; overridden = ov
erridden.satisfy(mark)) |
349 ; | 337 ; |
350 } | 338 } |
351 incrementalRemove(c) { | 339 incrementalRemove(c) { |
352 let out = c.output(); | 340 let out = c.output(); |
353 c.markUnsatisfied(); | 341 c.markUnsatisfied(); |
354 c.removeFromGraph(); | 342 c.removeFromGraph(); |
355 let unsatisfied = this.removePropagateFrom(out); | 343 let unsatisfied = this.removePropagateFrom(out); |
356 let strength = REQUIRED; | 344 let strength = REQUIRED; |
357 do { | 345 do { |
358 for (let i = 0; dart.notNull(i) < dart.notNull(unsatisfied[dartx.length]
); i = dart.notNull(i) + 1) { | 346 for (let i = 0; dart.notNull(i) < dart.notNull(unsatisfied[dartx.length]
); i = dart.notNull(i) + 1) { |
359 let u = unsatisfied[dartx.get](i); | 347 let u = unsatisfied[dartx.get](i); |
360 if (dart.equals(u.strength, strength)) | 348 if (dart.equals(u.strength, strength)) this.incrementalAdd(u); |
361 this.incrementalAdd(u); | |
362 } | 349 } |
363 strength = strength.nextWeaker(); | 350 strength = strength.nextWeaker(); |
364 } while (!dart.equals(strength, WEAKEST)); | 351 } while (!dart.equals(strength, WEAKEST)); |
365 } | 352 } |
366 newMark() { | 353 newMark() { |
367 return this.currentMark = dart.notNull(this.currentMark) + 1; | 354 return this.currentMark = dart.notNull(this.currentMark) + 1; |
368 } | 355 } |
369 makePlan(sources) { | 356 makePlan(sources) { |
370 let mark = this.newMark(); | 357 let mark = this.newMark(); |
371 let plan = new Plan(); | 358 let plan = new Plan(); |
372 let todo = sources; | 359 let todo = sources; |
373 while (dart.notNull(todo[dartx.length]) > 0) { | 360 while (dart.notNull(todo[dartx.length]) > 0) { |
374 let c = todo[dartx.removeLast](); | 361 let c = todo[dartx.removeLast](); |
375 if (c.output().mark != mark && dart.notNull(c.inputsKnown(mark))) { | 362 if (c.output().mark != mark && dart.notNull(c.inputsKnown(mark))) { |
376 plan.addConstraint(c); | 363 plan.addConstraint(c); |
377 c.output().mark = mark; | 364 c.output().mark = mark; |
378 this.addConstraintsConsumingTo(c.output(), todo); | 365 this.addConstraintsConsumingTo(c.output(), todo); |
379 } | 366 } |
380 } | 367 } |
381 return plan; | 368 return plan; |
382 } | 369 } |
383 extractPlanFromConstraints(constraints) { | 370 extractPlanFromConstraints(constraints) { |
384 let sources = dart.list([], Constraint); | 371 let sources = dart.list([], Constraint); |
385 for (let i = 0; dart.notNull(i) < dart.notNull(constraints[dartx.length]);
i = dart.notNull(i) + 1) { | 372 for (let i = 0; dart.notNull(i) < dart.notNull(constraints[dartx.length]);
i = dart.notNull(i) + 1) { |
386 let c = constraints[dartx.get](i); | 373 let c = constraints[dartx.get](i); |
387 if (dart.notNull(c.isInput()) && dart.notNull(c.isSatisfied())) | 374 if (dart.notNull(c.isInput()) && dart.notNull(c.isSatisfied())) sources[
dartx.add](c); |
388 sources[dartx.add](c); | |
389 } | 375 } |
390 return this.makePlan(sources); | 376 return this.makePlan(sources); |
391 } | 377 } |
392 addPropagate(c, mark) { | 378 addPropagate(c, mark) { |
393 let todo = dart.list([c], Constraint); | 379 let todo = dart.list([c], Constraint); |
394 while (dart.notNull(todo[dartx.length]) > 0) { | 380 while (dart.notNull(todo[dartx.length]) > 0) { |
395 let d = todo[dartx.removeLast](); | 381 let d = todo[dartx.removeLast](); |
396 if (d.output().mark == mark) { | 382 if (d.output().mark == mark) { |
397 this.incrementalRemove(c); | 383 this.incrementalRemove(c); |
398 return false; | 384 return false; |
399 } | 385 } |
400 d.recalculate(); | 386 d.recalculate(); |
401 this.addConstraintsConsumingTo(d.output(), todo); | 387 this.addConstraintsConsumingTo(d.output(), todo); |
402 } | 388 } |
403 return true; | 389 return true; |
404 } | 390 } |
405 removePropagateFrom(out) { | 391 removePropagateFrom(out) { |
406 out.determinedBy = null; | 392 out.determinedBy = null; |
407 out.walkStrength = WEAKEST; | 393 out.walkStrength = WEAKEST; |
408 out.stay = true; | 394 out.stay = true; |
409 let unsatisfied = dart.list([], Constraint); | 395 let unsatisfied = dart.list([], Constraint); |
410 let todo = dart.list([out], Variable); | 396 let todo = dart.list([out], Variable); |
411 while (dart.notNull(todo[dartx.length]) > 0) { | 397 while (dart.notNull(todo[dartx.length]) > 0) { |
412 let v = todo[dartx.removeLast](); | 398 let v = todo[dartx.removeLast](); |
413 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints[dartx.lengt
h]); i = dart.notNull(i) + 1) { | 399 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints[dartx.lengt
h]); i = dart.notNull(i) + 1) { |
414 let c = v.constraints[dartx.get](i); | 400 let c = v.constraints[dartx.get](i); |
415 if (!dart.notNull(c.isSatisfied())) | 401 if (!dart.notNull(c.isSatisfied())) unsatisfied[dartx.add](c); |
416 unsatisfied[dartx.add](c); | |
417 } | 402 } |
418 let determining = v.determinedBy; | 403 let determining = v.determinedBy; |
419 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints[dartx.lengt
h]); i = dart.notNull(i) + 1) { | 404 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints[dartx.lengt
h]); i = dart.notNull(i) + 1) { |
420 let next = v.constraints[dartx.get](i); | 405 let next = v.constraints[dartx.get](i); |
421 if (!dart.equals(next, determining) && dart.notNull(next.isSatisfied()
)) { | 406 if (!dart.equals(next, determining) && dart.notNull(next.isSatisfied()
)) { |
422 next.recalculate(); | 407 next.recalculate(); |
423 todo[dartx.add](next.output()); | 408 todo[dartx.add](next.output()); |
424 } | 409 } |
425 } | 410 } |
426 } | 411 } |
427 return unsatisfied; | 412 return unsatisfied; |
428 } | 413 } |
429 addConstraintsConsumingTo(v, coll) { | 414 addConstraintsConsumingTo(v, coll) { |
430 let determining = v.determinedBy; | 415 let determining = v.determinedBy; |
431 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints[dartx.length]
); i = dart.notNull(i) + 1) { | 416 for (let i = 0; dart.notNull(i) < dart.notNull(v.constraints[dartx.length]
); i = dart.notNull(i) + 1) { |
432 let c = v.constraints[dartx.get](i); | 417 let c = v.constraints[dartx.get](i); |
433 if (!dart.equals(c, determining) && dart.notNull(c.isSatisfied())) | 418 if (!dart.equals(c, determining) && dart.notNull(c.isSatisfied())) coll[
dartx.add](c); |
434 coll[dartx.add](c); | |
435 } | 419 } |
436 } | 420 } |
437 } | 421 } |
438 dart.setSignature(Planner, { | 422 dart.setSignature(Planner, { |
439 methods: () => ({ | 423 methods: () => ({ |
440 incrementalAdd: [dart.void, [Constraint]], | 424 incrementalAdd: [dart.void, [Constraint]], |
441 incrementalRemove: [dart.void, [Constraint]], | 425 incrementalRemove: [dart.void, [Constraint]], |
442 newMark: [core.int, []], | 426 newMark: [core.int, []], |
443 makePlan: [Plan, [core.List$(Constraint)]], | 427 makePlan: [Plan, [core.List$(Constraint)]], |
444 extractPlanFromConstraints: [Plan, [core.List$(Constraint)]], | 428 extractPlanFromConstraints: [Plan, [core.List$(Constraint)]], |
(...skipping 23 matching lines...) Expand all Loading... |
468 addConstraint: [dart.void, [Constraint]], | 452 addConstraint: [dart.void, [Constraint]], |
469 size: [core.int, []], | 453 size: [core.int, []], |
470 execute: [dart.void, []] | 454 execute: [dart.void, []] |
471 }) | 455 }) |
472 }); | 456 }); |
473 function chainTest(n) { | 457 function chainTest(n) { |
474 exports.planner = new Planner(); | 458 exports.planner = new Planner(); |
475 let prev = null, first = null, last = null; | 459 let prev = null, first = null, last = null; |
476 for (let i = 0; dart.notNull(i) <= dart.notNull(n); i = dart.notNull(i) + 1)
{ | 460 for (let i = 0; dart.notNull(i) <= dart.notNull(n); i = dart.notNull(i) + 1)
{ |
477 let v = new Variable("v", 0); | 461 let v = new Variable("v", 0); |
478 if (prev != null) | 462 if (prev != null) new EqualityConstraint(prev, v, REQUIRED); |
479 new EqualityConstraint(prev, v, REQUIRED); | 463 if (i == 0) first = v; |
480 if (i == 0) | 464 if (i == n) last = v; |
481 first = v; | |
482 if (i == n) | |
483 last = v; | |
484 prev = v; | 465 prev = v; |
485 } | 466 } |
486 new StayConstraint(last, STRONG_DEFAULT); | 467 new StayConstraint(last, STRONG_DEFAULT); |
487 let edit = new EditConstraint(first, PREFERRED); | 468 let edit = new EditConstraint(first, PREFERRED); |
488 let plan = exports.planner.extractPlanFromConstraints(dart.list([edit], Cons
traint)); | 469 let plan = exports.planner.extractPlanFromConstraints(dart.list([edit], Cons
traint)); |
489 for (let i = 0; dart.notNull(i) < 100; i = dart.notNull(i) + 1) { | 470 for (let i = 0; dart.notNull(i) < 100; i = dart.notNull(i) + 1) { |
490 first.value = i; | 471 first.value = i; |
491 plan.execute(); | 472 plan.execute(); |
492 if (last.value != i) { | 473 if (last.value != i) { |
493 core.print("Chain test failed:"); | 474 core.print("Chain test failed:"); |
494 core.print(`Expected last value to be ${i} but it was ${last.value}.`); | 475 core.print(`Expected last value to be ${i} but it was ${last.value}.`); |
495 } | 476 } |
496 } | 477 } |
497 } | 478 } |
498 dart.fn(chainTest, dart.void, [core.int]); | 479 dart.fn(chainTest, dart.void, [core.int]); |
499 function projectionTest(n) { | 480 function projectionTest(n) { |
500 exports.planner = new Planner(); | 481 exports.planner = new Planner(); |
501 let scale = new Variable("scale", 10); | 482 let scale = new Variable("scale", 10); |
502 let offset = new Variable("offset", 1000); | 483 let offset = new Variable("offset", 1000); |
503 let src = null, dst = null; | 484 let src = null, dst = null; |
504 let dests = dart.list([], Variable); | 485 let dests = dart.list([], Variable); |
505 for (let i = 0; dart.notNull(i) < dart.notNull(n); i = dart.notNull(i) + 1)
{ | 486 for (let i = 0; dart.notNull(i) < dart.notNull(n); i = dart.notNull(i) + 1)
{ |
506 src = new Variable("src", i); | 487 src = new Variable("src", i); |
507 dst = new Variable("dst", i); | 488 dst = new Variable("dst", i); |
508 dests[dartx.add](dst); | 489 dests[dartx.add](dst); |
509 new StayConstraint(src, NORMAL); | 490 new StayConstraint(src, NORMAL); |
510 new ScaleConstraint(src, scale, offset, dst, REQUIRED); | 491 new ScaleConstraint(src, scale, offset, dst, REQUIRED); |
511 } | 492 } |
512 change(src, 17); | 493 change(src, 17); |
513 if (dst.value != 1170) | 494 if (dst.value != 1170) core.print("Projection 1 failed"); |
514 core.print("Projection 1 failed"); | |
515 change(dst, 1050); | 495 change(dst, 1050); |
516 if (src.value != 5) | 496 if (src.value != 5) core.print("Projection 2 failed"); |
517 core.print("Projection 2 failed"); | |
518 change(scale, 5); | 497 change(scale, 5); |
519 for (let i = 0; dart.notNull(i) < dart.notNull(n) - 1; i = dart.notNull(i) +
1) { | 498 for (let i = 0; dart.notNull(i) < dart.notNull(n) - 1; i = dart.notNull(i) +
1) { |
520 if (dests[dartx.get](i).value != dart.notNull(i) * 5 + 1000) | 499 if (dests[dartx.get](i).value != dart.notNull(i) * 5 + 1000) core.print("P
rojection 3 failed"); |
521 core.print("Projection 3 failed"); | |
522 } | 500 } |
523 change(offset, 2000); | 501 change(offset, 2000); |
524 for (let i = 0; dart.notNull(i) < dart.notNull(n) - 1; i = dart.notNull(i) +
1) { | 502 for (let i = 0; dart.notNull(i) < dart.notNull(n) - 1; i = dart.notNull(i) +
1) { |
525 if (dests[dartx.get](i).value != dart.notNull(i) * 5 + 2000) | 503 if (dests[dartx.get](i).value != dart.notNull(i) * 5 + 2000) core.print("P
rojection 4 failed"); |
526 core.print("Projection 4 failed"); | |
527 } | 504 } |
528 } | 505 } |
529 dart.fn(projectionTest, dart.void, [core.int]); | 506 dart.fn(projectionTest, dart.void, [core.int]); |
530 function change(v, newValue) { | 507 function change(v, newValue) { |
531 let edit = new EditConstraint(v, PREFERRED); | 508 let edit = new EditConstraint(v, PREFERRED); |
532 let plan = exports.planner.extractPlanFromConstraints(dart.list([edit], Edit
Constraint)); | 509 let plan = exports.planner.extractPlanFromConstraints(dart.list([edit], Edit
Constraint)); |
533 for (let i = 0; dart.notNull(i) < 10; i = dart.notNull(i) + 1) { | 510 for (let i = 0; dart.notNull(i) < 10; i = dart.notNull(i) + 1) { |
534 v.value = newValue; | 511 v.value = newValue; |
535 plan.execute(); | 512 plan.execute(); |
536 } | 513 } |
(...skipping 22 matching lines...) Expand all Loading... |
559 exports.BinaryConstraint = BinaryConstraint; | 536 exports.BinaryConstraint = BinaryConstraint; |
560 exports.ScaleConstraint = ScaleConstraint; | 537 exports.ScaleConstraint = ScaleConstraint; |
561 exports.EqualityConstraint = EqualityConstraint; | 538 exports.EqualityConstraint = EqualityConstraint; |
562 exports.Variable = Variable; | 539 exports.Variable = Variable; |
563 exports.Planner = Planner; | 540 exports.Planner = Planner; |
564 exports.Plan = Plan; | 541 exports.Plan = Plan; |
565 exports.chainTest = chainTest; | 542 exports.chainTest = chainTest; |
566 exports.projectionTest = projectionTest; | 543 exports.projectionTest = projectionTest; |
567 exports.change = change; | 544 exports.change = change; |
568 }); | 545 }); |
OLD | NEW |