Third day in Go so pardon if this is a newb question ;). I am creating a simple calculator that will eventually have many different tasks: addition, subtraction, multiplication, etc, etc...Each of the tasks will have 2 functions: First and Second.
package main
import (
"github.com/mytestproj/calculator"
)
type Calc interface {
First(x int) int
Second(x int) int
}
func main() {
x := 16
var i Calc
a := calculator.Add{}
i = a
i.First(x)
i.Second(x)
}
I currently have everything organized as:
github.com/
mytestproj/
calculator/
addition.go
addition_test.go
subtraction.go
subtraction_test.go
main/
main.go
In addition.go I have:
package calculator
type Add struct{}
func BasicAddition(x int) int { // this won't be in the final release
return x + 2
}
func (h Add) First(x int) int {
x += 5
return x
}
func (h Add) Second(x int) int {
x += 10
return x
}
And in addition_test.go I have:
package calculator
import "testing"
func TestBasicAddition(t *testing.T) {
x := 30
if y := BasicAddition(x); y != 32 {
t.Errorf("Mine is %v", y)
}
}
func TestFirst(t *testing.T) {
x := 10
if y := First(x); y != 15 {
t.Errorf("First is %v", y)
}
}
When I run my test I get an error:
# github.com/mytestproj/calculator
./addition_test.go:15: undefined: First
FAIL github.com/mytestproj/calculator [build failed]
My question: How do I test "First?"
If I remove the test for First completely then the tests run fine and it passes.
Secondary question: The idea is to build a calculator app with many different functions. If there's a better way to organize the code then please let me know.