mirror of
https://github.com/restic/restic.git
synced 2024-08-01 10:03:27 +02:00
212 lines
5.3 KiB
Go
212 lines
5.3 KiB
Go
|
// Copyright 2018 Microsoft Corporation
|
||
|
//
|
||
|
// 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 exports_test
|
||
|
|
||
|
import (
|
||
|
"reflect"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/Azure/azure-sdk-for-go/tools/apidiff/exports"
|
||
|
)
|
||
|
|
||
|
var pkg exports.Package
|
||
|
var exp exports.Content
|
||
|
|
||
|
func init() {
|
||
|
pkg, _ = exports.LoadPackage("./testdata")
|
||
|
exp = pkg.GetExports()
|
||
|
}
|
||
|
|
||
|
func Test_Constants(t *testing.T) {
|
||
|
if l := len(exp.Consts); l != 13 {
|
||
|
t.Logf("wrong number of constants, got %v", l)
|
||
|
t.Fail()
|
||
|
}
|
||
|
|
||
|
tests := []struct {
|
||
|
cn string
|
||
|
exports.Const
|
||
|
}{
|
||
|
{"DefaultBaseURI", exports.Const{Type: "string", Value: "https://management.azure.com"}},
|
||
|
{"Tuesday", exports.Const{Type: "DayOfWeek", Value: "Tuesday"}},
|
||
|
{"Primary", exports.Const{Type: "KeyType", Value: "Primary"}},
|
||
|
{"Backup", exports.Const{Type: "KeyType", Value: "Backup"}},
|
||
|
}
|
||
|
|
||
|
for _, test := range tests {
|
||
|
t.Run(test.cn, func(t *testing.T) {
|
||
|
c := exp.Consts[test.cn]
|
||
|
if !reflect.DeepEqual(c.Type, test.Type) {
|
||
|
t.Logf("mismatched types, %s != %s", c.Type, test.Type)
|
||
|
t.Fail()
|
||
|
}
|
||
|
if c.Value != test.Value {
|
||
|
t.Logf("mismatched values, %s != %s", c.Value, test.Value)
|
||
|
t.Fail()
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Test_Funcs(t *testing.T) {
|
||
|
if l := len(exp.Funcs); l != 21 {
|
||
|
t.Logf("wrong number of funcs, got %v", l)
|
||
|
t.Fail()
|
||
|
}
|
||
|
|
||
|
tests := []struct {
|
||
|
fn string
|
||
|
exports.Func
|
||
|
}{
|
||
|
{"DoNothing", exports.Func{}},
|
||
|
{"DoNothingWithParam", exports.Func{Params: strPtr("int"), Returns: nil}},
|
||
|
{"UserAgent", exports.Func{Params: nil, Returns: strPtr("string")}},
|
||
|
{"Client.Delete", exports.Func{Params: strPtr("context.Context,string,string"), Returns: strPtr("DeleteFuture,error")}},
|
||
|
{"Client.ListSender", exports.Func{Params: strPtr("*http.Request"), Returns: strPtr("*http.Response,error")}},
|
||
|
}
|
||
|
|
||
|
for _, test := range tests {
|
||
|
t.Run(test.fn, func(t *testing.T) {
|
||
|
f := exp.Funcs[test.fn]
|
||
|
if !reflect.DeepEqual(f.Params, test.Params) {
|
||
|
t.Logf("mismatched params, %s != %s", safeStr(f.Params), safeStr(test.Params))
|
||
|
t.Fail()
|
||
|
}
|
||
|
if !reflect.DeepEqual(f.Returns, test.Returns) {
|
||
|
t.Logf("mismatched returns, %s != %s", safeStr(f.Returns), safeStr(test.Returns))
|
||
|
t.Fail()
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Test_Interfaces(t *testing.T) {
|
||
|
if l := len(exp.Interfaces); l != 1 {
|
||
|
t.Logf("wrong number of interfaces, got %v", l)
|
||
|
t.Fail()
|
||
|
}
|
||
|
|
||
|
tests := []struct {
|
||
|
in string
|
||
|
exports.Interface
|
||
|
}{
|
||
|
{"SomeInterface", exports.Interface{
|
||
|
Methods: map[string]exports.Func{
|
||
|
"One": exports.Func{
|
||
|
Params: nil,
|
||
|
Returns: nil,
|
||
|
},
|
||
|
"Two": exports.Func{
|
||
|
Params: strPtr("bool"),
|
||
|
Returns: nil,
|
||
|
},
|
||
|
"Three": exports.Func{
|
||
|
Params: nil,
|
||
|
Returns: strPtr("string"),
|
||
|
},
|
||
|
"Four": exports.Func{
|
||
|
Params: strPtr("int"),
|
||
|
Returns: strPtr("error"),
|
||
|
},
|
||
|
"Five": exports.Func{
|
||
|
Params: strPtr("int,bool"),
|
||
|
Returns: strPtr("int,error"),
|
||
|
},
|
||
|
},
|
||
|
}},
|
||
|
}
|
||
|
|
||
|
for _, test := range tests {
|
||
|
t.Run(test.in, func(t *testing.T) {
|
||
|
i := exp.Interfaces[test.in]
|
||
|
if !reflect.DeepEqual(i.Methods, test.Methods) {
|
||
|
t.Logf("mismatched methods, have %+v, want %+v", i.Methods, test.Methods)
|
||
|
t.Fail()
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Test_Structs(t *testing.T) {
|
||
|
if l := len(exp.Structs); l != 8 {
|
||
|
t.Logf("wrong number of structs, got %v", l)
|
||
|
t.Fail()
|
||
|
}
|
||
|
|
||
|
tests := []struct {
|
||
|
sn string
|
||
|
exports.Struct
|
||
|
}{
|
||
|
{"BaseClient", exports.Struct{
|
||
|
AnonymousFields: []string{"autorest.Client"},
|
||
|
Fields: map[string]string{
|
||
|
"BaseURI": "string",
|
||
|
"SubscriptionID": "string",
|
||
|
}}},
|
||
|
{"DeleteFuture", exports.Struct{
|
||
|
AnonymousFields: []string{"azure.Future"},
|
||
|
}},
|
||
|
{"ListResultPage", exports.Struct{}},
|
||
|
{"CreateParameters", exports.Struct{
|
||
|
AnonymousFields: []string{"*CreateProperties"},
|
||
|
Fields: map[string]string{
|
||
|
"Zones": "*[]string",
|
||
|
"Location": "*string",
|
||
|
"Tags": "map[string]*string",
|
||
|
}}},
|
||
|
{"CreateProperties", exports.Struct{
|
||
|
Fields: map[string]string{
|
||
|
"SubnetID": "*string",
|
||
|
"StaticIP": "*string",
|
||
|
"RedisConfiguration": "map[string]*string",
|
||
|
"EnableNonSslPort": "*bool",
|
||
|
"TenantSettings": "map[string]*string",
|
||
|
"ShardCount": "*int32",
|
||
|
}}},
|
||
|
}
|
||
|
|
||
|
for _, test := range tests {
|
||
|
t.Run(test.sn, func(t *testing.T) {
|
||
|
s := exp.Structs[test.sn]
|
||
|
if !reflect.DeepEqual(s.AnonymousFields, test.AnonymousFields) {
|
||
|
t.Logf("mismatched anonymous fields, have %+v, want %v", s.AnonymousFields, test.AnonymousFields)
|
||
|
t.Fail()
|
||
|
}
|
||
|
if !reflect.DeepEqual(s.Fields, test.Fields) {
|
||
|
t.Logf("mismatched fields, have %+v want %+v", s.Fields, test.Fields)
|
||
|
t.Fail()
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Test_Name(t *testing.T) {
|
||
|
if n := pkg.Name(); n != "testdata" {
|
||
|
t.Logf("incorrect package name, have '%s', want 'testdata'", n)
|
||
|
t.Fail()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func strPtr(s string) *string {
|
||
|
return &s
|
||
|
}
|
||
|
|
||
|
func safeStr(s *string) string {
|
||
|
if s == nil {
|
||
|
return "<nil>"
|
||
|
}
|
||
|
return *s
|
||
|
}
|