File: %2Btest.ha

package info (click to toggle)
hare 0.25.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,948 kB
  • sloc: asm: 1,264; makefile: 123; sh: 114; lisp: 101
file content (84 lines) | stat: -rw-r--r-- 3,742 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
// SPDX-License-Identifier: MPL-2.0
// (c) Hare authors <https://harelang.org>

use math;
use strconv;

@test fn print() void = {
	let buf: [1024]u8 = [0...];

	assert(bsprint(buf, "hello world")! == "hello world");
	assert(bsprintf(buf, "hello world")! == "hello world");
	assert(bsprintf(buf, "{} {}", "hello", "world")! == "hello world");
	assert(bsprintf(buf, "{0} {1}", "hello", "world")! == "hello world");
	assert(bsprintf(buf, "{0} {0}", "hello", "world")! == "hello hello");
	assert(bsprintf(buf, "{1} {0} {1}", "hello", "world")! == "world hello world");

	const mod = &mods { width = 7, pad = ' ', ... };
	assert(bsprintf(buf, "{%}", "hello", mod)! == "  hello");
	assert(bsprintf(buf, "{%1}", "hello", mod)! == "  hello");
	assert(bsprintf(buf, "{0%1}", "hello", mod)! == "  hello");
	assert(bsprintf(buf, "{0%2}", "hello", 0, mod)! == "  hello");
	assert(bsprintf(buf, "{1%2}", 0, "hello", mod)! == "  hello");
	assert(bsprintf(buf, "{2%0}", mod, 0, "hello")! == "  hello");
	assert(bsprintf(buf, "{2%}", mod, 0, "hello")! == "  hello");
	assert(bsprintf(buf, "|{1%}|{}|", mod, "hello")! == "|  hello|hello|");
	assert(bsprintf(buf, "|{}|{2%}|", "hello", mod, "world")! == "|hello|  world|");
	assert(bsprintf(buf, "|{%}|{%}|{%}|{%}|",
		"hello", &mods { ... },
		"world", &mods { width = 10, pad = ' ', ... },
		123,     &mods { prec = 10, ... },
		0xBEEF,  &mods { base = strconv::base::HEX, ... },
	)! == "|hello|     world|0000000123|BEEF|");
	assert(bsprintf(buf, "|{%}|{%}|{0%1}|",
		"hello", &mods { ... },
		"world", &mods { ... },
	)! == "|hello|world|hello|");

	assert(bsprintf(buf, "x: {:8X}",   0xBEEF)! == "x:     BEEF");
	assert(bsprintf(buf, "x: {:8X}",  -0xBEEF)! == "x:    -BEEF");
	assert(bsprintf(buf, "x: {: 8X}",  0xBEEF)! == "x:     BEEF");
	assert(bsprintf(buf, "x: {:+ 8X}", 0xBEEF)! == "x:     BEEF");
	assert(bsprintf(buf, "x: {:+8X}",  0xBEEF)! == "x:    +BEEF");
	assert(bsprintf(buf, "x: {: +8X}", 0xBEEF)! == "x:    +BEEF");

	assert(bsprintf(buf, "x: {:-8X}", 0xBEEF)! == "x: BEEF    ");
	assert(bsprintf(buf, "x: {:-8X}", -0xBEEF)! == "x: -BEEF   ");
	assert(bsprintf(buf, "x: {:-+8X}", 0xBEEF)! == "x: +BEEF   ");
	assert(bsprintf(buf, "x: {:- 8X}", 0xBEEF)! == "x:  BEEF   ");

	assert(bsprintf(buf, "x: {:.8x}", 0xBEEF)! == "x: 0000beef");
	assert(bsprintf(buf, "x: {:.8x}", -0xBEEF)! == "x: -000beef");
	assert(bsprintf(buf, "x: {:+.8x}", 0xBEEF)! == "x: +000beef");
	assert(bsprintf(buf, "x: {: .8x}", 0xBEEF)! == "x:  000beef");
	assert(bsprintf(buf, "x: {:-_08X}", 0xBEEF)! == "x: BEEF0000");

	assert(bsprintf(buf, "x: {:o}", 0o755)! == "x: 755");
	assert(bsprintf(buf, "x: {:b}", 0b11011)! == "x: 11011");

	assert(bsprintf(buf, "x: {:8}", "hello")! == "x:    hello");
	assert(bsprintf(buf, "x: {:-8}", "hello")! == "x: hello   ");
	assert(bsprintf(buf, "x: {:_08}", "hello")! == "x: 000hello");

	assert(bsprintf(buf, "{:.5}", "hello world")! == "hello");
	assert(bsprintf(buf, "{:.5}", "hi")! == "hi");
	assert(bsprintf(buf, "{:5.2}", "hello")! == "   he");

	assert(bsprintf(buf, "{:.1}", 123.0)! == "100");
	assert(bsprintf(buf, "{:.5}", 123.0)! == "123");

	assert(bsprintf(buf, "{:f}", 1.0e4)! == "10000");
	assert(bsprintf(buf, "{:e}", 123.45)! == "1.2345e2");
	assert(bsprintf(buf, "{:Fs}", 1.0)! == "+1");
	assert(bsprintf(buf, "{:F.}", 1.0)! == "1.0");
	assert(bsprintf(buf, "{:FU}", math::INF)! == "INFINITY");
	assert(bsprintf(buf, "{:FE}", 1.0e4)! == "1E4");
	assert(bsprintf(buf, "{:FS}", 1.0e4)! == "1e+4");
	assert(bsprintf(buf, "{:F2}", 1.0e4)! == "1e04");

	assert(bsprintf(buf, "{:=5}", "hi")! == "  hi ");
	assert(bsprintf(buf, "{:=6}", "hi")! == "  hi  ");

	assert(bsprintf(buf, "{} {} {} {} {}", true, false, null, 'x', void)!
		== "true false (null) x void");
};