105 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2020
 | |
| //
 | |
| // Licensed under the Apache License, Version 2.0 (the "License");
 | |
| // you may not use this file except in compliance with the License.
 | |
| // You may obtain a copy of the License at
 | |
| //
 | |
| // http://www.apache.org/licenses/LICENSE-2.0
 | |
| //
 | |
| // Unless required by applicable law or agreed to in writing, software
 | |
| // distributed under the License is distributed on an "AS IS" BASIS,
 | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| // See the License for the specific language governing permissions and
 | |
| // limitations under the License.
 | |
| 
 | |
| package config
 | |
| 
 | |
| import (
 | |
| 	"os"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func TestGlobalInstance(t *testing.T) {
 | |
| 	cfgStr := `
 | |
| appname = beeapi
 | |
| httpport = 8080
 | |
| mysqlport = 3600
 | |
| PI = 3.1415926
 | |
| runmode = "dev"
 | |
| autorender = false
 | |
| copyrequestbody = true
 | |
| session= on
 | |
| cookieon= off
 | |
| newreg = OFF
 | |
| needlogin = ON
 | |
| enableSession = Y
 | |
| enableCookie = N
 | |
| developer="tom;jerry"
 | |
| flag = 1
 | |
| path1 = ${GOPATH}
 | |
| path2 = ${GOPATH||/home/go}
 | |
| [demo]
 | |
| key1="asta"
 | |
| key2 = "xie"
 | |
| CaseInsensitive = true
 | |
| peers = one;two;three
 | |
| password = ${GOPATH}
 | |
| `
 | |
| 	path := os.TempDir() + string(os.PathSeparator) + "test_global_instance.ini"
 | |
| 	f, err := os.Create(path)
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 	_, err = f.WriteString(cfgStr)
 | |
| 	if err != nil {
 | |
| 		f.Close()
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 	f.Close()
 | |
| 	defer os.Remove(path)
 | |
| 
 | |
| 	err = InitGlobalInstance("ini", path)
 | |
| 	assert.Nil(t, err)
 | |
| 
 | |
| 	val, err := String("appname")
 | |
| 	assert.Nil(t, err)
 | |
| 	assert.Equal(t, "beeapi", val)
 | |
| 
 | |
| 	val = DefaultString("appname__", "404")
 | |
| 	assert.Equal(t, "404", val)
 | |
| 
 | |
| 	vi, err := Int("httpport")
 | |
| 	assert.Nil(t, err)
 | |
| 	assert.Equal(t, 8080, vi)
 | |
| 	vi = DefaultInt("httpport__", 404)
 | |
| 	assert.Equal(t, 404, vi)
 | |
| 
 | |
| 	vi64, err := Int64("mysqlport")
 | |
| 	assert.Nil(t, err)
 | |
| 	assert.Equal(t, int64(3600), vi64)
 | |
| 	vi64 = DefaultInt64("mysqlport__", 404)
 | |
| 	assert.Equal(t, int64(404), vi64)
 | |
| 
 | |
| 	vf, err := Float("PI")
 | |
| 	assert.Nil(t, err)
 | |
| 	assert.Equal(t, 3.1415926, vf)
 | |
| 	vf = DefaultFloat("PI__", 4.04)
 | |
| 	assert.Equal(t, 4.04, vf)
 | |
| 
 | |
| 	vb, err := Bool("copyrequestbody")
 | |
| 	assert.Nil(t, err)
 | |
| 	assert.True(t, vb)
 | |
| 
 | |
| 	vb = DefaultBool("copyrequestbody__", false)
 | |
| 	assert.False(t, vb)
 | |
| 
 | |
| 	vss := DefaultStrings("developer__", []string{"tom", ""})
 | |
| 	assert.Equal(t, []string{"tom", ""}, vss)
 | |
| 
 | |
| 	vss, err = Strings("developer")
 | |
| 	assert.Nil(t, err)
 | |
| 	assert.Equal(t, []string{"tom", "jerry"}, vss)
 | |
| }
 |