summaryrefslogtreecommitdiff
path: root/Build/source/utils/asymptote/tests/array/fields.asy
blob: 9b5926d37458464a5b5e6e9d5fce7b54d4707aa7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import TestLib;

StartTest("fields");

{
  int[] z = {1, 2, 3};
  assert(z.length == 3);
  int[] keys = z.keys;
  assert(keys.length == 3);
  for (int i; i<3; ++i)
    assert(keys[i] == i);
  for (int j = 0; j < 10; ++j) {
    assert(z.cyclic == false);
    z.cyclic=true;
    assert(z.cyclic == true);
    z.cyclic=false;
  }
}

{
  int[] z = {2, 3, 5};
  for (int k = -100; k <= 100; ++k)
    assert(z.initialized(k) == (k >= 0 && k < 3));
}

{
  int[] z;
  for (int i=0; i<10; ++i) {
    for (int k = 0; k <= 100; ++k) {
      assert(z.length == k);
      z.push(k*k+3k+1);
      assert(z.length == k+1);
    }
    for (int k = 100; k >= 0; --k) {
      assert(z.length == k+1);
      assert(z.pop() == k*k+3k+1);
      assert(z.length == k);
    }
  }
  z.cyclic=true;
  for (int i=0; i<10; ++i) {
    for (int k = 0; k <= 100; ++k) {
      assert(z.length == k);
      z.push(k*k+3k+1);
      assert(z.length == k+1);
    }
    for (int k = 100; k >= 0; --k) {
      assert(z.length == k+1);
      z.delete(quotient(k,2));
      assert(z.length == k);
    }
  }
}

{
  int[] base={4,5,9,5,0,2,3};
  int[] z;
  for (int i=0; i<9; ++i) {
    assert(z.length == i*base.length);
    for (int j : z.keys)
      assert(z[j] == base[j%base.length]);
    z.append(base);
  }
}

{
  int[] z = {1,2,3,4,6,7,8,9};
  assert(z.length == 8);
  z.insert(4, 5);
  assert(z.length == 9);
  z.insert(0, 0);
  assert(z.length == 10);
  for (int i=0; i<10; ++i)
    assert(z[i] == i);
  z.insert(7, 100, 101, 102, 103);
  assert(z.length == 14);

  // TODO: Test inserting/deleting lengths more seriously.
}

{
  // Test extended for.
  int[] a = {1,4,6,2,7,4,8,9,1,3,-1};
  int i = 0;
  for (int x : a) {
    assert(x == a[i]);
    ++i;
  }
  assert(i == a.length);
}

{
  // Test extended for.
  int[] a = {1,4,6,2,7,4,8,9,1,3,-1};
  int i = 0;
  for (var x : a) {
    assert(x == a[i]);
    ++i;
  }
  assert(i == a.length);
}

EndTest();