| package main |
| |
| import ( |
| "fmt" |
| "swigtests/cpp11_std_array" |
| ) |
| |
| func CompareContainers(actual cpp11_std_array.ArrayInt6, expected [6]int) error { |
| if int(actual.Size()) != len(expected) { |
| return fmt.Errorf("Sizes are different: %d %d", actual.Size(), len(expected)) |
| } |
| for i := 0; i < int(actual.Size()); i++ { |
| actualValue := actual.Get(i) |
| expectedValue := expected[i] |
| if actualValue != expectedValue { |
| return fmt.Errorf("Value is wrong for element %d. Expected %d got: %d", i, expectedValue, actualValue) |
| } |
| } |
| if actual.IsEmpty() { |
| return fmt.Errorf("ai should not be empty") |
| } |
| return nil |
| } |
| |
| func main() { |
| ai := cpp11_std_array.NewArrayInt6() |
| ps := [6]int{0, 0, 0, 0, 0, 0} |
| CompareContainers(ai, ps) |
| |
| vals := [6]int{10, 20, 30, 40, 50, 60} |
| for i := 0; i < len(vals); i++ { |
| ai.Set(i, vals[i]) |
| } |
| CompareContainers(ai, vals); |
| |
| // Check return |
| vals = [6]int{-2, -1, 0, 0, 1, 2} |
| CompareContainers(cpp11_std_array.ArrayOutVal(), vals); |
| CompareContainers(cpp11_std_array.ArrayOutConstRef(), vals); |
| CompareContainers(cpp11_std_array.ArrayOutRef(), vals); |
| CompareContainers(cpp11_std_array.ArrayOutPtr(), vals); |
| |
| // Check passing arguments |
| vals = [6]int{9, 8, 7, 6, 5, 4} |
| valsArrayInt6 := cpp11_std_array.NewArrayInt6() |
| for i := 0; i < len(vals); i++ { |
| valsArrayInt6.Set(i, vals[i]) |
| } |
| |
| ai = cpp11_std_array.ArrayInVal(valsArrayInt6); |
| CompareContainers(ai, vals); |
| |
| ai = cpp11_std_array.ArrayInConstRef(valsArrayInt6); |
| CompareContainers(ai, vals); |
| |
| ai = cpp11_std_array.NewArrayInt6(valsArrayInt6); |
| cpp11_std_array.ArrayInRef(ai); |
| CompareContainers(ai, vals); |
| |
| ai = cpp11_std_array.NewArrayInt6(valsArrayInt6); |
| cpp11_std_array.ArrayInPtr(ai); |
| CompareContainers(ai, vals); |
| |
| // Fill |
| ai.Fill(111) |
| vals = [6]int{111, 111, 111, 111, 111, 111} |
| CompareContainers(ai, vals); |
| } |