Hunter0x7c7
2022-08-11 a82f9cb69f63aaeba40c024960deda7d75b9fece
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package json_test
 
import (
    "encoding/json"
    "testing"
 
    . "github.com/v2fly/v2ray-core/v5/infra/conf/json"
)
 
func TestTOMLToJSON_V2Style(t *testing.T) {
    input := `
[log]
loglevel = 'debug'
 
[[inbounds]]
port = 10800
listen = '127.0.0.1'
protocol = 'socks'
 
[inbounds.settings]
udp = true
 
[[outbounds]]
protocol = 'vmess'
[[outbounds.settings.vnext]]
port = 443
address = 'example.com'
 
[[outbounds.settings.vnext.users]]
id = '98a15fa6-2eb1-edd5-50ea-cfc428aaab78'
 
[outbounds.streamSettings]
network = 'tcp'
security = 'tls'
`
    expected := `
{
    "log": {
        "loglevel": "debug"
    },
    "inbounds": [{
        "port": 10800,
        "listen": "127.0.0.1",
        "protocol": "socks",
        "settings": {
            "udp": true
        }
    }],
    "outbounds": [{
        "protocol": "vmess",
        "settings": {
            "vnext": [{
                "port": 443,
                "address": "example.com",
                "users": [{
                    "id": "98a15fa6-2eb1-edd5-50ea-cfc428aaab78"
                }]
            }]
        },
        "streamSettings": {
            "network": "tcp",
            "security": "tls"
        }
    }]
}
`
    bs, err := FromTOML([]byte(input))
    if err != nil {
        t.Error(err)
    }
    m := make(map[string]interface{})
    json.Unmarshal(bs, &m)
    assertResult(t, m, expected)
}
 
func TestTOMLToJSON_ValueTypes(t *testing.T) {
    input := `
boolean = [ true, false, true, false ]
float = [ 3.14, 685_230.15 ]
int = [ 123, 685_230 ]
string = [ "哈哈", "Hello world", "newline newline2" ]
date = [ "2018-02-17" ]
datetime = [ "2018-02-17T15:02:31+08:00" ]
1 = 0
true = true
str = "hello"
 
[null]
nodeName = "node"
`
    expected := `
{
    "boolean": [true, false, true, false],
    "float": [3.14, 685230.15],
    "int": [123, 685230],
    "null": {
        "nodeName": "node"
    },
    "string": ["哈哈", "Hello world",  "newline newline2"],
    "date": ["2018-02-17"],
    "datetime": ["2018-02-17T15:02:31+08:00"],
    "1": 0,
    "true": true,
    "str": "hello"
}
`
    bs, err := FromTOML([]byte(input))
    if err != nil {
        t.Error(err)
    }
    m := make(map[string]interface{})
    json.Unmarshal(bs, &m)
    assertResult(t, m, expected)
}