| 1 | import os |
| 2 | import runtime |
| 3 | |
| 4 | fn 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 | |
| 18 | fn test_nr_cpus() { |
| 19 | nr_cpus := runtime.nr_cpus() |
| 20 | println(' nr cpus: ${nr_cpus}') |
| 21 | assert nr_cpus > 0 |
| 22 | } |
| 23 | |
| 24 | fn test_nr_jobs() { |
| 25 | nr_jobs := runtime.nr_jobs() |
| 26 | println(' nr jobs: ${nr_jobs}') |
| 27 | assert nr_jobs > 0 |
| 28 | } |
| 29 | |
| 30 | fn 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 | |
| 45 | fn 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 | |
| 61 | fn test_is_32bit() { |
| 62 | x := runtime.is_32bit().str() |
| 63 | println(' is_32bit: ${x}') |
| 64 | assert x == 'true' || x == 'false' |
| 65 | } |
| 66 | |
| 67 | fn test_is_64bit() { |
| 68 | x := runtime.is_64bit().str() |
| 69 | println(' is_64bit: ${x}') |
| 70 | assert x == 'true' || x == 'false' |
| 71 | } |
| 72 | |
| 73 | fn test_is_little_endian() { |
| 74 | x := runtime.is_little_endian().str() |
| 75 | println(' is_le: ${x}') |
| 76 | assert x == 'true' || x == 'false' |
| 77 | } |
| 78 | |
| 79 | fn test_is_big_endian() { |
| 80 | x := runtime.is_big_endian().str() |
| 81 | println(' is_be: ${x}') |
| 82 | assert x == 'true' || x == 'false' |
| 83 | } |
| 84 | |
| 85 | fn test_is_big_endian_different_than_is_little_endian() { |
| 86 | assert runtime.is_big_endian() != runtime.is_little_endian() |
| 87 | } |
| 88 | |
| 89 | fn test_is_32bit_different_than_is_64bit() { |
| 90 | assert runtime.is_32bit() != runtime.is_64bit() |
| 91 | } |
| 92 | |