Source file
test/arenas/smoke.go
1
2
3
4
5
6
7 package main
8
9 import (
10 "arena"
11 "log"
12 "reflect"
13 )
14
15 func main() {
16 a := arena.NewArena()
17 defer a.Free()
18
19 const iValue = 10
20
21 i := arena.New[int](a)
22 *i = iValue
23
24 if *i != iValue {
25
26
27 log.Fatalf("bad i value: got %d, want %d", *i, iValue)
28 }
29
30 const wantLen = 125
31 const wantCap = 1912
32
33 sl := arena.MakeSlice[*int](a, wantLen, wantCap)
34 if len(sl) != wantLen {
35 log.Fatalf("bad arena slice length: got %d, want %d", len(sl), wantLen)
36 }
37 if cap(sl) != wantCap {
38 log.Fatalf("bad arena slice capacity: got %d, want %d", cap(sl), wantCap)
39 }
40 sl = sl[:cap(sl)]
41 for j := range sl {
42 sl[j] = i
43 }
44 for j := range sl {
45 if *sl[j] != iValue {
46
47
48 log.Fatalf("bad sl[j] value: got %d, want %d", *sl[j], iValue)
49 }
50 }
51
52 t := reflect.TypeOf(int(0))
53 v := reflect.ArenaNew(a, t)
54 if want := reflect.PointerTo(t); v.Type() != want {
55 log.Fatalf("unexpected type for arena-allocated value: got %s, want %s", v.Type(), want)
56 }
57 i2 := v.Interface().(*int)
58 *i2 = iValue
59
60 if *i2 != iValue {
61
62
63 log.Fatalf("bad i2 value: got %d, want %d", *i2, iValue)
64 }
65 }
66
View as plain text