v/vlib/builtin/map_test.v

76 lines
1.3 KiB
Go
Raw Normal View History

2019-07-14 11:01:32 +02:00
import time
struct User {
name string
}
2019-06-30 13:44:08 +02:00
struct A {
m map[string]int
users map[string]User
2019-06-30 13:44:08 +02:00
}
fn (a mut A) set(key string, val int) {
a.m[key] = val
}
fn test_map() {
mut m := map[string]int{}
2019-07-14 11:01:32 +02:00
assert m.size == 0
2019-06-30 13:44:08 +02:00
m['hi'] = 80
2019-07-14 11:01:32 +02:00
m['hello'] = 101
2019-06-30 13:44:08 +02:00
assert m['hi'] == 80
2019-07-14 11:01:32 +02:00
assert m['hello'] == 101
assert m.size == 2
mut sum := 0
mut key_sum := ''
// Test `for in`
for key, val in m {
sum += val
key_sum += key
}
assert sum == 80 + 101
assert key_sum == 'hihello'
// Test `.keys()`
keys := m.keys()
assert keys.len == 2
assert keys[0] == 'hi'
assert keys[1] == 'hello'
////
mut users := map[string]User{}
users['1'] = User{'Peter'}
peter := users['1']
assert peter.name == 'Peter'
2019-07-14 11:01:32 +02:00
println(peter.name)
2019-06-30 13:44:08 +02:00
mut a := A{
m: map[string]int{}
users: map[string]User{}
2019-06-30 13:44:08 +02:00
}
a.users['Bob'] = User{'Bob'}
q := a.users['Bob']
assert q.name == 'Bob'
2019-06-30 13:44:08 +02:00
a.m['one'] = 1
a.set('two', 2)
assert a.m['one'] == 1
assert a.m['two'] == 2
}
2019-07-14 11:01:32 +02:00
fn test_string_map() {
//m := map[string]Fn
}
fn test_large_map() {
//ticks := time.ticks()
mut nums := map[string]int{}
N := 30 * 1000
for i := 0; i < N; i++ {
key := i.str()
nums[key] = i
}
assert nums['1'] == 1
assert nums['999'] == 999
assert nums['1000000'] == 0
//println(time.ticks() - ticks)
}