blob: 133b7fb44856c297ea164ca8cee9832f0903fdf9 [file] [log] [blame]
// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// @dart = 2.9
import "package:expect/expect.dart";
swap1(x, y, b) {
if (b) {
var t = x;
x = y;
y = t;
}
Expect.equals(2, x);
Expect.equals(1, y);
}
swap2(x, y, z, w, b) {
if (b) {
var t = x;
x = y;
y = t;
var q = z;
z = w;
w = q;
}
Expect.equals(2, x);
Expect.equals(1, y);
Expect.equals(4, z);
Expect.equals(3, w);
}
swap3(x, y, z, b) {
if (b) {
var t = x;
x = y;
y = z;
z = t;
}
Expect.equals(2, x);
Expect.equals(3, y);
Expect.equals(1, z);
}
swap4(x, y, z, b) {
if (b) {
var t = x;
x = y;
y = z; // swap cycle involves unused variable 'y'
z = t;
}
Expect.equals(2, x);
Expect.equals(1, z);
}
swap5(x, y, z, w, b, b2) {
if (b) {
var t = x;
x = y;
y = t;
}
if (b2) {
var q = z;
z = w;
w = q;
}
Expect.equals(2, x);
Expect.equals(1, y);
Expect.equals(4, z);
Expect.equals(3, w);
}
main() {
swap1(1, 2, true);
swap1(2, 1, false);
swap2(1, 2, 3, 4, true);
swap2(2, 1, 4, 3, false);
swap3(1, 2, 3, true);
swap3(2, 3, 1, false);
swap4(1, 2, 3, true);
swap4(2, 3, 1, false);
swap5(1, 2, 3, 4, true, true);
swap5(1, 2, 4, 3, true, false);
swap5(2, 1, 3, 4, false, true);
swap5(2, 1, 4, 3, false, false);
}