blob: 97b5df2ec8dc739fa82d9799985d1f7a94e0fe5c [file] [log] [blame]
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);
}