1
0
mirror of https://github.com/tmrts/go-patterns.git synced 2024-11-25 14:36:06 +03:00

Modify strategy pattern

This commit is contained in:
Tamer Tas 2016-01-03 07:03:20 +02:00
parent b10a4f9cac
commit b1ddd2651b
2 changed files with 19 additions and 15 deletions

View File

@ -1,6 +1,4 @@
package main
import "fmt"
package strategy
type Operator interface {
Apply(int, int) int
@ -25,15 +23,3 @@ type Addition struct{}
func (Addition) Apply(lval, rval int) int {
return lval + rval
}
func main() {
mult := Operation{Multiplication{}}
// Outputs 15
fmt.Println(mult.Operate(3, 5))
pow := Operation{Addition{}}
// Outputs 8
fmt.Println(pow.Operate(3, 5))
}

18
strategy/strategy_test.go Normal file
View File

@ -0,0 +1,18 @@
package strategy
import "testing"
func TestMultiplicationStrategy(t *testing.T) {
mult := Operation{Multiplication{}}
if res := mult.Operate(3, 5); res != 15 {
t.Errorf("Multiplication.Operate(3, 5) expected 15 got %q", res)
}
}
func TestAdditionStrategy(t *testing.T) {
add := Operation{Addition{}}
if res := add.Operate(3, 5); res != 8 {
t.Errorf("Addition.Operate(3, 5) expected 8 got %q", res)
}
}