// Copyright 2014 beego Author. All Rights Reserved. // // 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 xml import ( "fmt" "os" "testing" "github.com/astaxie/beego/adapter/config" ) func TestXML(t *testing.T) { var ( //xml parse should incluce in tags xmlcontext = ` beeapi 8080 3600 3.1415976 dev false true ${GOPATH} ${GOPATH||/home/go} 1 MySection ` keyValue = map[string]interface{}{ "appname": "beeapi", "httpport": 8080, "mysqlport": int64(3600), "PI": 3.1415976, "runmode": "dev", "autorender": false, "copyrequestbody": true, "path1": os.Getenv("GOPATH"), "path2": os.Getenv("GOPATH"), "error": "", "emptystrings": []string{}, } ) f, err := os.Create("testxml.conf") if err != nil { t.Fatal(err) } _, err = f.WriteString(xmlcontext) if err != nil { f.Close() t.Fatal(err) } f.Close() defer os.Remove("testxml.conf") xmlconf, err := config.NewConfig("xml", "testxml.conf") if err != nil { t.Fatal(err) } var xmlsection map[string]string xmlsection, err = xmlconf.GetSection("mysection") if err != nil { t.Fatal(err) } if len(xmlsection) == 0 { t.Error("section should not be empty") } for k, v := range keyValue { var ( value interface{} err error ) switch v.(type) { case int: value, err = xmlconf.Int(k) case int64: value, err = xmlconf.Int64(k) case float64: value, err = xmlconf.Float(k) case bool: value, err = xmlconf.Bool(k) case []string: value = xmlconf.Strings(k) case string: value = xmlconf.String(k) default: value, err = xmlconf.DIY(k) } if err != nil { t.Errorf("get key %q value fatal,%v err %s", k, v, err) } else if fmt.Sprintf("%v", v) != fmt.Sprintf("%v", value) { t.Errorf("get key %q value, want %v got %v .", k, v, value) } } if err = xmlconf.Set("name", "astaxie"); err != nil { t.Fatal(err) } if xmlconf.String("name") != "astaxie" { t.Fatal("get name error") } }