PathrockNetwork Gno Explorer
HomeBlocksTransactionsTokensRealmsPackagesValidatorsAnalytics

PathrockNetwork Gno Explorer — an independent explorer for Gno.land Mainnet (gnoland-1), operated by PathrockNetwork. Not an official Gno.land service.

gnowebarchive RPC

gno.land/p/moul/vendor/nt/ufmt/v2

Package
Open in gnoweb ↗

Overview

Kind
Pure package
Name
v2
Namespace
moul / vendor / nt / ufmt
Files
8 (README)(gnomod.toml)
Exported functions
n/a — not supported for pure packages by the node (vm/qfuncs)
Module
gno.land/p/moul/vendor/nt/ufmt/v2
gno
0.9

Files (8)

  • README.mdmarkdown
  • gnomod.tomltoml
  • doc.gnogno
  • format.gnogno
  • print.gnogno
  • ufmt.gnogno
  • gofmt_test.gnogno
  • methods_test.gnogno
  • gofmt_test.gnogno
    1package ufmt23import (4	"math"5	"testing"6)78

    Functions

    not supported for pure packages by the node (vm/qfuncs)

    Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.

    // goCases were generated by running each row through Go's fmt.Sprintf
    9// (go1.27.1), so a row that fails here is a place v2 differs from Go.
    10var goCases = []struct {
    11 format string
    12 args []any
    13 want string
    14}{
    15 {"%d", []any{7}, "7"},
    16 {"%03d", []any{7}, "007"},
    17 {"%08X", []any{uint32(0xdead)}, "0000DEAD"},
    18 {"0x%08X", []any{uint32(0x10074)}, "0x00010074"},
    19 {"%08x", []any{uint32(0x00a00513)}, "00a00513"},
    20 {"%x", []any{uint32(255)}, "ff"},
    21 {"%X", []any{-255}, "-FF"},
    22 {"%#x", []any{255}, "0xff"},
    23 {"%#X", []any{255}, "0XFF"},
    24 {"%#08x", []any{255}, "0x000000ff"},
    25 {"%#o", []any{8}, "010"},
    26 {"%O", []any{8}, "0o10"},
    27 {"%b", []any{5}, "101"},
    28 {"%#b", []any{5}, "0b101"},
    29 {"%o", []any{-8}, "-10"},
    30 {"%5d", []any{42}, " 42"},
    31 {"%-5d|", []any{42}, "42 |"},
    32 {"%+d", []any{42}, "+42"},
    33 {"% d", []any{42}, " 42"},
    34 {"%+05d", []any{42}, "+0042"},
    35 {"%-05d|", []any{42}, "42 |"},
    36 {"%.3d", []any{7}, "007"},
    37 {"%8.3d", []any{-7}, " -007"},
    38 {"%.0d", []any{0}, ""},
    39 {"%5.0d|", []any{0}, " |"},
    40 {"%d", []any{int64(-9223372036854775808)}, "-9223372036854775808"},
    41 {"%x", []any{int64(-9223372036854775808)}, "-8000000000000000"},
    42 {"%d", []any{uint64(18446744073709551615)}, "18446744073709551615"},
    43 {"%x", []any{uint64(18446744073709551615)}, "ffffffffffffffff"},
    44 {"%d", []any{int8(-128)}, "-128"},
    45 {"%d", []any{uint8(200)}, "200"},
    46 {"%x", []any{int16(-1)}, "-1"},
    47 {"%d", []any{"hi"}, "%!d(string=hi)"},
    48 {"%s", []any{42}, "%!s(int=42)"},
    49 {"%c", []any{'x'}, "x"},
    50 {"%c", []any{0x1F600}, "😀"},
    51 {"%q", []any{'x'}, "'x'"},
    52 {"%+q", []any{'é'}, "'\\u00e9'"},
    53 {"%U", []any{0x1F600}, "U+1F600"},
    54 {"%#U", []any{'x'}, "U+0078 'x'"},
    55 {"%U", []any{1}, "U+0001"},
    56 {"%.6U", []any{1}, "U+000001"},
    57 {"%c", []any{-1}, "�"},
    58 {"%s", []any{"hello"}, "hello"},
    59 {"%10s|", []any{"hello"}, " hello|"},
    60 {"%-10s|", []any{"hello"}, "hello |"},
    61 {"%.2s", []any{"hello"}, "he"},
    62 {"%.2s", []any{"héllo"}, "hé"},
    63 {"%5.1s|", []any{"héllo"}, " h|"},
    64 {"%05s", []any{"ab"}, "000ab"},
    65 {"%q", []any{"hi\n"}, "\"hi\\n\""},
    66 {"%+q", []any{"héllo"}, "\"h\\u00e9llo\""},
    67 {"%#q", []any{"back`tick"}, "\"back`tick\""},
    68 {"%#q", []any{"plain"}, "`plain`"},
    69 {"%x", []any{"hello"}, "68656c6c6f"},
    70 {"%X", []any{"hello"}, "68656C6C6F"},
    71 {"% x", []any{"hello"}, "68 65 6c 6c 6f"},
    72 {"%# x", []any{"hi"}, "0x68 0x69"},
    73 {"%#x", []any{"hi"}, "0x6869"},
    74 {"%10x|", []any{"hi"}, " 6869|"},
    75 {"%-10x|", []any{"hi"}, "6869 |"},
    76 {"%x", []any{""}, ""},
    77 {"%5x|", []any{""}, " |"},
    78 {"%.1x", []any{"hi"}, "68"},
    79 {"%s", []any{[]byte("bytes")}, "bytes"},
    80 {"%x", []any{[]byte{1, 171}}, "01ab"},
    81 {"%X", []any{[]byte{1, 171}}, "01AB"},
    82 {"%v", []any{[]byte{1, 2}}, "[1 2]"},
    83 {"%d", []any{[]byte{1, 2}}, "[1 2]"},
    84 {"%#v", []any{[]byte{1, 2}}, "[]byte{0x1, 0x2}"},
    85 {"%q", []any{[]byte("q")}, "\"q\""},
    86 {"%b", []any{[]byte{3}}, "[11]"},
    87 {"%t", []any{true}, "true"},
    88 {"%v", []any{false}, "false"},
    89 {"%5t|", []any{true}, " true|"},
    90 {"%d", []any{true}, "%!d(bool=true)"},
    91 {"%f", []any{3.14159}, "3.141590"},
    92 {"%.2f", []any{3.14159}, "3.14"},
    93 {"%8.3f|", []any{3.14159}, " 3.142|"},
    94 {"%-8.3f|", []any{3.14159}, "3.142 |"},
    95 {"%08.3f", []any{-3.14159}, "-003.142"},
    96 {"%+.1f", []any{2.0}, "+2.0"},
    97 {"% .1f", []any{2.0}, " 2.0"},
    98 {"%e", []any{1234.5678}, "1.234568e+03"},
    99 {"%E", []any{1234.5678}, "1.234568E+03"},
    100 {"%.2e", []any{1234.5678}, "1.23e+03"},
    101 {"%g", []any{1234.5678}, "1234.5678"},
    102 {"%g", []any{1e21}, "1e+21"},
    103 {"%g", []any{0.00001}, "1e-05"},
    104 {"%G", []any{1e-10}, "1E-10"},
    105 {"%v", []any{3.14}, "3.14"},
    106 {"%v", []any{1e6}, "1e+06"},
    107 {"%v", []any{100000.0}, "100000"},
    108 {"%v", []any{float32(0.1)}, "0.1"},
    109 {"%F", []any{1.5}, "1.500000"},
    110 {"%#g", []any{1.0}, "1.00000"},
    111 {"%#.3g", []any{1.0}, "1.00"},
    112 {"%#f", []any{1.0}, "1.000000"},
    113 {"%#.0f", []any{1.0}, "1."},
    114 {"%#.0e", []any{1.0}, "1.e+00"},
    115 {"%x", []any{1.0}, "0x1p+00"},
    116 {"%X", []any{1.0}, "0X1P+00"},
    117 {"%b", []any{1.0}, "4503599627370496p-52"},
    118 {"%.3x", []any{3.14159}, "0x1.922p+01"},
    119 {"%f", []any{math.Inf(1)}, "+Inf"},
    120 {"%+f", []any{math.Inf(1)}, "+Inf"},
    121 {"%08f", []any{math.Inf(-1)}, " -Inf"},
    122 {"%f", []any{math.NaN()}, "NaN"},
    123 {"%+f", []any{math.NaN()}, "+NaN"},
    124 {"%010.2f", []any{12.5}, "0000012.50"},
    125 {"%s", []any{1.5}, "%!s(float64=1.5)"},
    126 {"%v", []any{nil}, "<nil>"},
    127 {"%d", []any{nil}, "%!d(<nil>)"},
    128 {"%s", []any{nil}, "%!s(<nil>)"},
    129 {"%T", []any{nil}, "<nil>"},
    130 {"%T", []any{42}, "int"},
    131 {"%T", []any{"s"}, "string"},
    132 {"%T", []any{[]byte("x")}, "[]uint8"},
    133 {"%T", []any{3.0}, "float64"},
    134 {"%T", []any{int8(1)}, "int8"},
    135 {"%T", []any{[]string{"a"}}, "[]string"},
    136 {"%T", []any{map[string]int{}}, "map[string]int"},
    137 {"%5T|", []any{1}, " int|"},
    138 {"%v", []any{[]string{"a", "b"}}, "[a b]"},
    139 {"%q", []any{[]string{"a", "b"}}, "[\"a\" \"b\"]"},
    140 {"%#v", []any{[]string{"a", "b"}}, "[]string{\"a\", \"b\"}"},
    141 {"%#v", []any{[]string(nil)}, "[]string(nil)"},
    142 {"%v", []any{[]int{1, 2, 3}}, "[1 2 3]"},
    143 {"%3d", []any{[]int{1, 2}}, "[ 1 2]"},
    144 {"%x", []any{[]int{10, 255}}, "[a ff]"},
    145 {"%d", []any{[]string{"a"}}, "[%!d(string=a)]"},
    146 {"%v", []any{[]any{1, "a", nil, true}}, "[1 a <nil> true]"},
    147 {"%#v", []any{[]any{1, "a", nil}}, "[]interface {}{1, \"a\", interface {}(nil)}"},
    148 {"%v", []any{[]float64{1.5, 2}}, "[1.5 2]"},
    149 {"%v", []any{map[string]int{"b": 2, "a": 1, "c": 3}}, "map[a:1 b:2 c:3]"},
    150 {"%#v", []any{map[string]int{"b": 2, "a": 1}}, "map[string]int{\"a\":1, \"b\":2}"},
    151 {"%v", []any{map[string]string{"k": "v"}}, "map[k:v]"},
    152 {"%v", []any{map[string]any{"x": nil, "y": 1}}, "map[x:<nil> y:1]"},
    153 {"%v", []any{map[string]bool{}}, "map[]"},
    154 {"%#v", []any{"str"}, "\"str\""},
    155 {"%#v", []any{42}, "42"},
    156 {"%#v", []any{uint(42)}, "0x2a"},
    157 {"%#v", []any{3.0}, "3"},
    158 {"%#v", []any{true}, "true"},
    159 {"%#v", []any{nil}, "<nil>"},
    160 {"%+v", []any{42}, "42"},
    161 {"%+v", []any{"x"}, "x"},
    162 {"%%", []any{}, "%"},
    163 {"100%%", []any{}, "100%"},
    164 {"%5%", []any{}, "%"},
    165 {"%", []any{}, "%!(NOVERB)"},
    166 {"abc%", []any{}, "abc%!(NOVERB)"},
    167 {"%!", []any{}, "%!!(MISSING)"},
    168 {"%z", []any{1}, "%!z(int=1)"},
    169 {"%d", []any{}, "%!d(MISSING)"},
    170 {"%d %d", []any{1}, "1 %!d(MISSING)"},
    171 {"%d", []any{1, 2}, "1%!(EXTRA int=2)"},
    172 {"%s", []any{"a", 3, nil}, "a%!(EXTRA int=3, <nil>)"},
    173 {"%[2]d %[1]d", []any{1, 2}, "2 1"},
    174 {"%[1]d %[1]x", []any{255}, "255 ff"},
    175 {"%[3]d", []any{1, 2}, "%!d(BADINDEX)"},
    176 {"%[0]d", []any{1}, "%!d(BADINDEX)"},
    177 {"%[x]d", []any{1}, "%!d(BADINDEX)"},
    178 {"%[1]*d|", []any{5, 42}, " 42|"},
    179 {"%[2]*[1]d|", []any{42, 6}, " 42|"},
    180 {"%*d|", []any{5, 42}, " 42|"},
    181 {"%-*d|", []any{5, 42}, "42 |"},
    182 {"%*d|", []any{-5, 42}, "42 |"},
    183 {"%.*f", []any{2, 3.14159}, "3.14"},
    184 {"%.*f", []any{-1, 3.14159}, "%!(BADPREC)3.141590"},
    185 {"%*d", []any{"x", 1}, "%!(BADWIDTH)1"},
    186 {"%.*d", []any{"x", 1}, "%!(BADPREC)1"},
    187 {"%*.*f|", []any{8, 2, 3.14159}, " 3.14|"},
    188 {"%d %s", []any{1}, "1 %!s(MISSING)"},
    189 {"%[2]d", []any{1}, "%!d(BADINDEX)"},
    190 {"%5.2v|", []any{3.14159}, " 3.1|"},
    191 {"%v %v", []any{"a", "b"}, "a b"},
    192 {"%-+5d|", []any{3}, "+3 |"},
    193 {"%+-5d|", []any{3}, "+3 |"},
    194 {"%0-5d|", []any{3}, "3 |"},
    195 {"%x", []any{-1}, "-1"},
    196 {"%#v", []any{[]byte(nil)}, "[]byte(nil)"},
    197 {"%v", []any{[]byte{}}, "[]"},
    198 {"%v", []any{[]string{}}, "[]"},
    199 {"%d", []any{[]any{1, "x"}}, "[1 %!d(string=x)]"},
    200 {"%v", []any{int32(-5)}, "-5"},
    201 {"%c", []any{65}, "A"},
    202 {"%x", []any{"\xff\x00"}, "ff00"},
    203 {"%s", []any{"日本語"}, "日本語"},
    204 {"%6s|", []any{"日本語"}, " 日本語|"},
    205 {"%-6s|", []any{"日本語"}, "日本語 |"},
    206 {"%q", []any{"日本語"}, "\"日本語\""},
    207 {"%+q", []any{"日本語"}, "\"\\u65e5\\u672c\\u8a9e\""},
    208 {"%x", []any{"日本"}, "e697a5e69cac"},
    209 {"%v", []any{"\x00"}, "\x00"},
    210 {"%q", []any{'\n'}, "'\\n'"},
    211 {"%q", []any{0x110000}, "'�'"},
    212 {"%U", []any{-1}, "U+FFFFFFFFFFFFFFFF"},
    213 {"%10.4f|", []any{1234.56789}, " 1234.5679|"},
    214 {"%-10.1e|", []any{1234.56789}, "1.2e+03 |"},
    215 {"%+e", []any{0.0}, "+0.000000e+00"},
    216 {"%g", []any{-0.0}, "0"},
    217 {"%.3g", []any{123456.0}, "1.23e+05"},
    218 {"%.10g", []any{1.0 / 3}, "0.3333333333"},
    219 {"%e", []any{float32(1.0) / 3}, "3.333333e-01"},
    220 {"%v", []any{float32(16777216.0)}, "1.6777216e+07"},
    221 {"%v", []any{1e100}, "1e+100"},
    222 {"%v", []any{123456789.0}, "1.23456789e+08"},
    223 {"%v", []any{0.000001}, "1e-06"},
    224 {"%v", []any{0.0000001}, "1e-07"},
    225}
    226
    227func TestSprintfMatchesGo(t *testing.T) {
    228 for _, c := range goCases {
    229 if got := Sprintf(c.format, c.args...); got != c.want {
    230 t.Errorf("Sprintf(%q, %v) = %q, want %q", c.format, c.args, got, c.want)
    231 }
    232 }
    233}
    234