2021-01-01 09:18:47 -05:00
|
|
|
package json
|
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
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)
|
|
|
|
}
|
2021-11-27 01:32:07 -05:00
|
|
|
|
2021-01-01 09:18:47 -05:00
|
|
|
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)
|
|
|
|
}
|