Skip to content

Commit

Permalink
add tests to assert 1 to 1 relation between struct and interface
Browse files Browse the repository at this point in the history
  • Loading branch information
felipemadero authored and StephenButtolph committed Nov 9, 2021
1 parent 3e15952 commit 837c2f3
Show file tree
Hide file tree
Showing 8 changed files with 143 additions and 0 deletions.
17 changes: 17 additions & 0 deletions api/admin/client_interface_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package admin

import (
"reflect"
"testing"
)

func TestInterfaceStructOneToOne(t *testing.T) {
// checks struct provides at least the methods signatures in the interface
var _ Client = (*client)(nil)
// checks interface and struct have the same number of methods
clientType := reflect.TypeOf(&client{})
ClientType := reflect.TypeOf((*Client)(nil)).Elem()
if clientType.NumMethod() != ClientType.NumMethod() {
t.Fatalf("no 1 to 1 compliance between struct methods (%v) and interface methods (%v)", clientType.NumMethod(), ClientType.NumMethod())
}
}
17 changes: 17 additions & 0 deletions api/health/client_interface_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package health

import (
"reflect"
"testing"
)

func TestInterfaceStructOneToOne(t *testing.T) {
// checks struct provides at least the methods signatures in the interface
var _ Client = (*client)(nil)
// checks interface and struct have the same number of methods
clientType := reflect.TypeOf(&client{})
ClientType := reflect.TypeOf((*Client)(nil)).Elem()
if clientType.NumMethod() != ClientType.NumMethod() {
t.Fatalf("no 1 to 1 compliance between struct methods (%v) and interface methods (%v)", clientType.NumMethod(), ClientType.NumMethod())
}
}
17 changes: 17 additions & 0 deletions api/info/client_interface_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package info

import (
"reflect"
"testing"
)

func TestInterfaceStructOneToOne(t *testing.T) {
// checks struct provides at least the methods signatures in the interface
var _ Client = (*client)(nil)
// checks interface and struct have the same number of methods
clientType := reflect.TypeOf(&client{})
ClientType := reflect.TypeOf((*Client)(nil)).Elem()
if clientType.NumMethod() != ClientType.NumMethod() {
t.Fatalf("no 1 to 1 compliance between struct methods (%v) and interface methods (%v)", clientType.NumMethod(), ClientType.NumMethod())
}
}
17 changes: 17 additions & 0 deletions api/ipcs/client_interface_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package ipcs

import (
"reflect"
"testing"
)

func TestInterfaceStructOneToOne(t *testing.T) {
// checks struct provides at least the methods signatures in the interface
var _ Client = (*client)(nil)
// checks interface and struct have the same number of methods
clientType := reflect.TypeOf(&client{})
ClientType := reflect.TypeOf((*Client)(nil)).Elem()
if clientType.NumMethod() != ClientType.NumMethod() {
t.Fatalf("no 1 to 1 compliance between struct methods (%v) and interface methods (%v)", clientType.NumMethod(), ClientType.NumMethod())
}
}
17 changes: 17 additions & 0 deletions api/keystore/client_interface_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package keystore

import (
"reflect"
"testing"
)

func TestInterfaceStructOneToOne(t *testing.T) {
// checks struct provides at least the methods signatures in the interface
var _ Client = (*client)(nil)
// checks interface and struct have the same number of methods
clientType := reflect.TypeOf(&client{})
ClientType := reflect.TypeOf((*Client)(nil)).Elem()
if clientType.NumMethod() != ClientType.NumMethod() {
t.Fatalf("no 1 to 1 compliance between struct methods (%v) and interface methods (%v)", clientType.NumMethod(), ClientType.NumMethod())
}
}
17 changes: 17 additions & 0 deletions indexer/client_interface_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package indexer

import (
"reflect"
"testing"
)

func TestInterfaceStructOneToOne(t *testing.T) {
// checks struct provides at least the methods signatures in the interface
var _ Client = (*client)(nil)
// checks interface and struct have the same number of methods
clientType := reflect.TypeOf(&client{})
ClientType := reflect.TypeOf((*Client)(nil)).Elem()
if clientType.NumMethod() != ClientType.NumMethod() {
t.Fatalf("no 1 to 1 compliance between struct methods (%v) and interface methods (%v)", clientType.NumMethod(), ClientType.NumMethod())
}
}
24 changes: 24 additions & 0 deletions vms/avm/client_interface_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package avm

import (
"reflect"
"testing"
)

func TestInterfaceStructOneToOne(t *testing.T) {
// checks struct provides at least the methods signatures in the interface
var _ Client = (*client)(nil)
// checks interface and struct have the same number of methods
clientType := reflect.TypeOf(&client{})
ClientType := reflect.TypeOf((*Client)(nil)).Elem()
if clientType.NumMethod() != ClientType.NumMethod() {
t.Fatalf("no 1 to 1 compliance between struct methods (%v) and interface methods (%v)", clientType.NumMethod(), ClientType.NumMethod())
}
// Wallet
var _ WalletClient = (*walletClient)(nil)
clientType = reflect.TypeOf(&walletClient{})
ClientType = reflect.TypeOf((*WalletClient)(nil)).Elem()
if clientType.NumMethod() != ClientType.NumMethod() {
t.Fatalf("no 1 to 1 compliance between struct methods (%v) and interface methods (%v)", clientType.NumMethod(), ClientType.NumMethod())
}
}
17 changes: 17 additions & 0 deletions vms/platformvm/client_interface_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package platformvm

import (
"reflect"
"testing"
)

func TestInterfaceStructOneToOne(t *testing.T) {
// checks struct provides at least the methods signatures in the interface
var _ Client = (*client)(nil)
// checks interface and struct have the same number of methods
clientType := reflect.TypeOf(&client{})
ClientType := reflect.TypeOf((*Client)(nil)).Elem()
if clientType.NumMethod() != ClientType.NumMethod() {
t.Fatalf("no 1 to 1 compliance between struct methods (%v) and interface methods (%v)", clientType.NumMethod(), ClientType.NumMethod())
}
}

0 comments on commit 837c2f3

Please sign in to comment.