1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-12-21 01:27:03 -05:00
v2fly/infra/conf/json/toml_test.go
Shelikhoo 37f1b98cb2
relax test for mixed type content
Whether to allow mixed type data is contested. Since V2Ray does not use this kind of mix content in array by design, relaxing this test to avoid test break.
https://github.com/toml-lang/toml/issues/553
2021-10-21 23:34:53 +01:00

112 lines
2.1 KiB
Go

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)
}
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)
}