Skip to content
Snippets Groups Projects
channelsFileTransfer_test.go 3.26 KiB
Newer Older
////////////////////////////////////////////////////////////////////////////////
// Copyright © 2022 xx foundation                                             //
//                                                                            //
// Use of this source code is governed by a license that can be found in the  //
// LICENSE file.                                                              //
////////////////////////////////////////////////////////////////////////////////

//go:build js && wasm

package wasm

import (
	"gitlab.com/elixxir/client/v4/bindings"
	"reflect"
	"testing"
)

// Tests that the map representing ChannelsFileTransfer returned by
// newChannelsFileTransferJS contains all of the methods on ChannelsFileTransfer.
func Test_newChannelsFileTransferJS(t *testing.T) {
	cftType := reflect.TypeOf(&ChannelsFileTransfer{})

	ft := newChannelsFileTransferJS(&bindings.ChannelsFileTransfer{})
	if len(ft) != cftType.NumMethod() {
		t.Errorf("ChannelsFileTransfer JS object does not have all methods."+
			"\nexpected: %d\nreceived: %d", cftType.NumMethod(), len(ft))
	}

	for i := 0; i < cftType.NumMethod(); i++ {
		method := cftType.Method(i)

		if _, exists := ft[method.Name]; !exists {
			t.Errorf("Method %s does not exist.", method.Name)
		}
	}
}

// Tests that ChannelsFileTransfer has all the methods that
// [bindings.ChannelsFileTransfer] has.
func Test_ChannelsFileTransferMethods(t *testing.T) {
	cftType := reflect.TypeOf(&ChannelsFileTransfer{})
	binCftType := reflect.TypeOf(&bindings.ChannelsFileTransfer{})

	if binCftType.NumMethod() != cftType.NumMethod() {
		t.Errorf("WASM ChannelsFileTransfer object does not have all methods "+
			"from bindings.\nexpected: %d\nreceived: %d",
			binCftType.NumMethod(), cftType.NumMethod())
	}

	for i := 0; i < binCftType.NumMethod(); i++ {
		method := binCftType.Method(i)

		if _, exists := cftType.MethodByName(method.Name); !exists {
			t.Errorf("Method %s does not exist.", method.Name)
		}
	}
}

// Tests that the map representing ChFilePartTracker returned by
// newChFilePartTrackerJS contains all of the methods on ChFilePartTracker.
func Test_newChFilePartTrackerJS(t *testing.T) {
	fptType := reflect.TypeOf(&FilePartTracker{})

	fpt := newChFilePartTrackerJS(&bindings.ChFilePartTracker{})
	if len(fpt) != fptType.NumMethod() {
		t.Errorf("ChFilePartTracker JS object does not have all methods."+
			"\nexpected: %d\nreceived: %d", fptType.NumMethod(), len(fpt))
	}

	for i := 0; i < fptType.NumMethod(); i++ {
		method := fptType.Method(i)

		if _, exists := fpt[method.Name]; !exists {
			t.Errorf("Method %s does not exist.", method.Name)
		}
	}
}

// Tests that ChFilePartTracker has all the methods that
// [bindings.ChFilePartTracker] has.
func Test_ChFilePartTrackerMethods(t *testing.T) {
	fptType := reflect.TypeOf(&ChFilePartTracker{})
	binFptType := reflect.TypeOf(&bindings.ChFilePartTracker{})

	if binFptType.NumMethod() != fptType.NumMethod() {
		t.Errorf("WASM ChFilePartTracker object does not have all methods from "+
			"bindings.\nexpected: %d\nreceived: %d",
			binFptType.NumMethod(), fptType.NumMethod())
	}

	for i := 0; i < binFptType.NumMethod(); i++ {
		method := binFptType.Method(i)

		if _, exists := fptType.MethodByName(method.Name); !exists {
			t.Errorf("Method %s does not exist.", method.Name)
		}
	}
}