diff options
author | Damian Gryski <[email protected]> | 2022-03-14 11:51:44 -0700 |
---|---|---|
committer | Ron Evans <[email protected]> | 2022-04-04 13:22:19 +0200 |
commit | 73571dd423f343a0126e65a8149bf5ac83ee3f55 (patch) | |
tree | e8668c8ab391193b2b256bc56284f231657525c2 /testdata | |
parent | 8872229a0bcf6369e78935640995004cea6f34e1 (diff) | |
download | tinygo-73571dd423f343a0126e65a8149bf5ac83ee3f55.tar.gz tinygo-73571dd423f343a0126e65a8149bf5ac83ee3f55.zip |
testdata: add test for mapgrowth logic
Diffstat (limited to 'testdata')
-rw-r--r-- | testdata/mapgrowth.go | 66 | ||||
-rw-r--r-- | testdata/mapgrowth.txt | 1 |
2 files changed, 67 insertions, 0 deletions
diff --git a/testdata/mapgrowth.go b/testdata/mapgrowth.go new file mode 100644 index 000000000..5a37303af --- /dev/null +++ b/testdata/mapgrowth.go @@ -0,0 +1,66 @@ +package main + +func main() { + + m := make(map[int]int) + + const ( + Delete = 500 + N = Delete * 2 + ) + + for i := 0; i < Delete; i++ { + m[i] = i + } + + var deleted bool + for k, v := range m { + if k == 0 { + // grow map + for i := Delete; i < N; i++ { + m[i] = i + } + + // delete some elements + for i := 0; i < Delete; i++ { + delete(m, i) + } + deleted = true + continue + } + + // make sure we never see a deleted element later in our iteration + if deleted && v < Delete { + println("saw deleted element", v) + } + } + + if len(m) != N-Delete { + println("bad length post grow/delete", len(m)) + } + + seen := make([]bool, 500) + + var mcount int + for k, v := range m { + if k != v { + println("element mismatch", k, v) + } + if k < Delete { + println("saw deleted element post-grow", k) + } + seen[v-Delete] = true + mcount++ + } + + for _, v := range seen { + if !v { + println("missing key", v) + } + } + + if mcount != N-Delete { + println("bad number of elements post-grow:", mcount) + } + println("done") +} diff --git a/testdata/mapgrowth.txt b/testdata/mapgrowth.txt new file mode 100644 index 000000000..19f86f493 --- /dev/null +++ b/testdata/mapgrowth.txt @@ -0,0 +1 @@ +done |