Index: test/codegen/expect/language/fannkuch_test.js |
diff --git a/test/codegen/expect/language/fannkuch_test.js b/test/codegen/expect/language/fannkuch_test.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e1751ef1e999a52dfb1c97649e79c04e3f07cd20 |
--- /dev/null |
+++ b/test/codegen/expect/language/fannkuch_test.js |
@@ -0,0 +1,101 @@ |
+dart_library.library('language/fannkuch_test', null, /* Imports */[ |
+ 'dart_sdk', |
+ 'expect' |
+], function load__fannkuch_test(exports, dart_sdk, expect) { |
+ 'use strict'; |
+ const core = dart_sdk.core; |
+ const _interceptors = dart_sdk._interceptors; |
+ const dart = dart_sdk.dart; |
+ const dartx = dart_sdk.dartx; |
+ const expect$ = expect.expect; |
+ const fannkuch_test = Object.create(null); |
+ let JSArrayOfint = () => (JSArrayOfint = dart.constFn(_interceptors.JSArray$(core.int)))(); |
+ let VoidTodynamic = () => (VoidTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [])))(); |
+ fannkuch_test.FannkuchTest = class FannkuchTest extends core.Object { |
+ static fannkuch(n) { |
+ let p = core.List.new(core.int._check(n)), q = core.List.new(core.int._check(n)), s = core.List.new(core.int._check(n)); |
+ let sign = 1, maxflips = 0, sum = 0, m = dart.dsend(n, '-', 1); |
+ for (let i = 0; i < dart.notNull(core.num._check(n)); i++) { |
+ p[dartx.set](i, i); |
+ q[dartx.set](i, i); |
+ s[dartx.set](i, i); |
+ } |
+ do { |
+ let q0 = p[dartx.get](0); |
+ if (!dart.equals(q0, 0)) { |
+ for (let i = 1; i < dart.notNull(core.num._check(n)); i++) |
+ q[dartx.set](i, p[dartx.get](i)); |
+ let flips = 1; |
+ do { |
+ let qq = q[dartx.get](core.int._check(q0)); |
+ if (dart.equals(qq, 0)) { |
+ sum = sum + sign * flips; |
+ if (flips > maxflips) maxflips = flips; |
+ break; |
+ } |
+ q[dartx.set](core.int._check(q0), q0); |
+ if (dart.test(dart.dsend(q0, '>=', 3))) { |
+ let i = 1, j = dart.dsend(q0, '-', 1), t = null; |
+ do { |
+ t = q[dartx.get](i); |
+ q[dartx.set](i, q[dartx.get](core.int._check(j))); |
+ q[dartx.set](core.int._check(j), t); |
+ i++; |
+ j = dart.dsend(j, '-', 1); |
+ } while (i < dart.notNull(core.num._check(j))); |
+ } |
+ q0 = qq; |
+ flips++; |
+ } while (true); |
+ } |
+ if (sign == 1) { |
+ let t = p[dartx.get](1); |
+ p[dartx.set](1, p[dartx.get](0)); |
+ p[dartx.set](0, t); |
+ sign = -1; |
+ } else { |
+ let t = p[dartx.get](1); |
+ p[dartx.set](1, p[dartx.get](2)); |
+ p[dartx.set](2, t); |
+ sign = 1; |
+ for (let i = 2; i < dart.notNull(core.num._check(n)); i++) { |
+ let sx = s[dartx.get](i); |
+ if (!dart.equals(sx, 0)) { |
+ s[dartx.set](i, dart.dsend(sx, '-', 1)); |
+ break; |
+ } |
+ if (dart.equals(i, m)) { |
+ return JSArrayOfint().of([sum, maxflips]); |
+ } |
+ s[dartx.set](i, i); |
+ t = p[dartx.get](0); |
+ for (let j = 0; j <= i; j++) { |
+ p[dartx.set](j, p[dartx.get](j + 1)); |
+ } |
+ p[dartx.set](i + 1, t); |
+ } |
+ } |
+ } while (true); |
+ } |
+ static testMain() { |
+ let n = 6; |
+ let pf = fannkuch_test.FannkuchTest.fannkuch(n); |
+ expect$.Expect.equals(49, dart.dindex(pf, 0)); |
+ expect$.Expect.equals(10, dart.dindex(pf, 1)); |
+ core.print(dart.str`${dart.dindex(pf, 0)}\nPfannkuchen(${n}) = ${dart.dindex(pf, 1)}`); |
+ } |
+ }; |
+ dart.setSignature(fannkuch_test.FannkuchTest, { |
+ statics: () => ({ |
+ fannkuch: dart.definiteFunctionType(dart.dynamic, [dart.dynamic]), |
+ testMain: dart.definiteFunctionType(dart.dynamic, []) |
+ }), |
+ names: ['fannkuch', 'testMain'] |
+ }); |
+ fannkuch_test.main = function() { |
+ fannkuch_test.FannkuchTest.testMain(); |
+ }; |
+ dart.fn(fannkuch_test.main, VoidTodynamic()); |
+ // Exports: |
+ exports.fannkuch_test = fannkuch_test; |
+}); |