use "sequence_queries.g"; use "sequence_mutation.g"; use "basic_models.g"; use "iterator_models.g"; use "slist.g"; use "list.g"; fun main() -> int@ { { let n = 3; let l = @slist(); for (let i = 0; i != n; ++i) push_front(n - 1 - i, l); /* test forward version */ let i = begin(l); rotate(begin(l), ++i, end(l)); let i = begin(l); if (*i != 1) return 1; ++i; if (*i != 2) return 2; ++i; if (*i != 0) return 3; } { let n = 3; let l = @list(); for (let i = 0; i != n; ++i) push_front(n - 1 - i, l); /* test bidirectional version */ let i = begin(l); rotate(begin(l), ++i, end(l)); let i = begin(l); if (*i != 1) return 4; ++i; if (*i != 2) return 5; ++i; if (*i != 0) return 6; } { let n = 3; let a = new int[n]; for (let i = 0; i != n; ++i) a[i] = i; /* test random access version */ rotate(a, a + 1, a + n); if (a[0] != 1) return 7; if (a[1] != 2) return 8; if (a[2] != 0) return 9; } return 0; }