// Example using pointers to member functions

package main

import "fmt"
import . "swigtests/member_pointer"

func check(what string, expected float64, actual float64) {
	if expected != actual {
		panic(fmt.Sprintf("Failed: %s Expected: %f Actual; %f", what, expected, actual))
	}
}

func main() {
	// Get the pointers

	area_pt := Areapt()
	perim_pt := Perimeterpt()

	// Create some objects

	s := NewSquare(10)

	// Do some calculations

	check("Square area ", 100.0, Do_op(s, area_pt))
	check("Square perim", 40.0, Do_op(s, perim_pt))

	_ = GetAreavar()
	_ = GetPerimetervar()

	// Try the variables
	check("Square area ", 100.0, Do_op(s, GetAreavar()))
	check("Square perim", 40.0, Do_op(s, GetPerimetervar()))

	// Modify one of the variables
	SetAreavar(perim_pt)

	check("Square perimeter", 40.0, Do_op(s, GetAreavar()))

	// Try the constants

	_ = AREAPT
	_ = PERIMPT
	_ = NULLPT

	check("Square area ", 100.0, Do_op(s, AREAPT))
	check("Square perim", 40.0, Do_op(s, PERIMPT))
}
