v / vlib / runtime / runtime_test.v
91 lines · 80 sloc · 2.01 KB · 773cfe113be8cb12a570b21f5a205db8a10679ce
Raw
1import os
2import runtime
3
4fn test_physical_memory() {
5 $if windows || linux || darwin || freebsd || openbsd {
6 total := runtime.total_memory()!
7 free := runtime.free_memory()!
8 println('total memory: ${total}')
9 println('free memory: ${free}')
10 assert total > 0 && free > 0
11 } $else {
12 total := runtime.total_memory()!
13 _ := runtime.free_memory() or { assert err.msg().contains('not implemented') }
14 assert total > 0
15 }
16}
17
18fn test_nr_cpus() {
19 nr_cpus := runtime.nr_cpus()
20 println(' nr cpus: ${nr_cpus}')
21 assert nr_cpus > 0
22}
23
24fn test_nr_jobs() {
25 nr_jobs := runtime.nr_jobs()
26 println(' nr jobs: ${nr_jobs}')
27 assert nr_jobs > 0
28}
29
30fn test_nr_jobs_matches_nr_cpus_without_vjobs() {
31 env := os.environ()
32 had_vjobs := 'VJOBS' in env
33 saved_vjobs := env['VJOBS']
34 defer {
35 if had_vjobs {
36 os.setenv('VJOBS', saved_vjobs, true)
37 } else {
38 os.unsetenv('VJOBS')
39 }
40 }
41 os.unsetenv('VJOBS')
42 assert runtime.nr_jobs() == runtime.nr_cpus()
43}
44
45fn test_nr_jobs_uses_vjobs_override() {
46 env := os.environ()
47 had_vjobs := 'VJOBS' in env
48 saved_vjobs := env['VJOBS']
49 defer {
50 if had_vjobs {
51 os.setenv('VJOBS', saved_vjobs, true)
52 } else {
53 os.unsetenv('VJOBS')
54 }
55 }
56 expected_jobs := runtime.nr_cpus() + 1
57 os.setenv('VJOBS', expected_jobs.str(), true)
58 assert runtime.nr_jobs() == expected_jobs
59}
60
61fn test_is_32bit() {
62 x := runtime.is_32bit().str()
63 println(' is_32bit: ${x}')
64 assert x == 'true' || x == 'false'
65}
66
67fn test_is_64bit() {
68 x := runtime.is_64bit().str()
69 println(' is_64bit: ${x}')
70 assert x == 'true' || x == 'false'
71}
72
73fn test_is_little_endian() {
74 x := runtime.is_little_endian().str()
75 println(' is_le: ${x}')
76 assert x == 'true' || x == 'false'
77}
78
79fn test_is_big_endian() {
80 x := runtime.is_big_endian().str()
81 println(' is_be: ${x}')
82 assert x == 'true' || x == 'false'
83}
84
85fn test_is_big_endian_different_than_is_little_endian() {
86 assert runtime.is_big_endian() != runtime.is_little_endian()
87}
88
89fn test_is_32bit_different_than_is_64bit() {
90 assert runtime.is_32bit() != runtime.is_64bit()
91}
92