1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package badjsonmerge
- import (
- "testing"
- C "github.com/sagernet/sing-box/constant"
- "github.com/sagernet/sing-box/option"
- N "github.com/sagernet/sing/common/network"
- "github.com/stretchr/testify/require"
- )
- func TestMergeJSON(t *testing.T) {
- t.Parallel()
- options := option.Options{
- Log: &option.LogOptions{
- Level: "info",
- },
- Route: &option.RouteOptions{
- Rules: []option.Rule{
- {
- Type: C.RuleTypeDefault,
- DefaultOptions: option.DefaultRule{
- Network: []string{N.NetworkTCP},
- Outbound: "direct",
- },
- },
- },
- },
- }
- anotherOptions := option.Options{
- Outbounds: []option.Outbound{
- {
- Type: C.TypeDirect,
- Tag: "direct",
- },
- },
- }
- thirdOptions := option.Options{
- Route: &option.RouteOptions{
- Rules: []option.Rule{
- {
- Type: C.RuleTypeDefault,
- DefaultOptions: option.DefaultRule{
- Network: []string{N.NetworkUDP},
- Outbound: "direct",
- },
- },
- },
- },
- }
- mergeOptions, err := MergeOptions(options, anotherOptions)
- require.NoError(t, err)
- mergeOptions, err = MergeOptions(thirdOptions, mergeOptions)
- require.NoError(t, err)
- require.Equal(t, "info", mergeOptions.Log.Level)
- require.Equal(t, 2, len(mergeOptions.Route.Rules))
- require.Equal(t, C.TypeDirect, mergeOptions.Outbounds[0].Type)
- }
|