diff options
Diffstat (limited to 'src/pkg/math/big/int_test.go')
| -rw-r--r-- | src/pkg/math/big/int_test.go | 66 | 
1 files changed, 66 insertions, 0 deletions
| diff --git a/src/pkg/math/big/int_test.go b/src/pkg/math/big/int_test.go index 87b975d5c..299dc72fb 100644 --- a/src/pkg/math/big/int_test.go +++ b/src/pkg/math/big/int_test.go @@ -9,6 +9,7 @@ import (  	"encoding/gob"  	"encoding/hex"  	"encoding/json" +	"encoding/xml"  	"fmt"  	"math/rand"  	"testing" @@ -767,6 +768,19 @@ var expTests = []struct {  	x, y, m string  	out     string  }{ +	// y <= 0 +	{"0", "0", "", "1"}, +	{"1", "0", "", "1"}, +	{"-10", "0", "", "1"}, +	{"1234", "-1", "", "1"}, + +	// m == 1 +	{"0", "0", "1", "0"}, +	{"1", "0", "1", "0"}, +	{"-10", "0", "1", "0"}, +	{"1234", "-1", "1", "0"}, + +	// misc  	{"5", "-7", "", "1"},  	{"-5", "-7", "", "1"},  	{"5", "0", "", "1"}, @@ -1528,6 +1542,58 @@ func TestIntJSONEncoding(t *testing.T) {  	}  } +var intVals = []string{ +	"-141592653589793238462643383279502884197169399375105820974944592307816406286", +	"-1415926535897932384626433832795028841971", +	"-141592653589793", +	"-1", +	"0", +	"1", +	"141592653589793", +	"1415926535897932384626433832795028841971", +	"141592653589793238462643383279502884197169399375105820974944592307816406286", +} + +func TestIntJSONEncodingTextMarshaller(t *testing.T) { +	for _, num := range intVals { +		var tx Int +		tx.SetString(num, 0) +		b, err := json.Marshal(&tx) +		if err != nil { +			t.Errorf("marshaling of %s failed: %s", &tx, err) +			continue +		} +		var rx Int +		if err := json.Unmarshal(b, &rx); err != nil { +			t.Errorf("unmarshaling of %s failed: %s", &tx, err) +			continue +		} +		if rx.Cmp(&tx) != 0 { +			t.Errorf("JSON encoding of %s failed: got %s want %s", &tx, &rx, &tx) +		} +	} +} + +func TestIntXMLEncodingTextMarshaller(t *testing.T) { +	for _, num := range intVals { +		var tx Int +		tx.SetString(num, 0) +		b, err := xml.Marshal(&tx) +		if err != nil { +			t.Errorf("marshaling of %s failed: %s", &tx, err) +			continue +		} +		var rx Int +		if err := xml.Unmarshal(b, &rx); err != nil { +			t.Errorf("unmarshaling of %s failed: %s", &tx, err) +			continue +		} +		if rx.Cmp(&tx) != 0 { +			t.Errorf("XML encoding of %s failed: got %s want %s", &tx, &rx, &tx) +		} +	} +} +  func TestIssue2607(t *testing.T) {  	// This code sequence used to hang.  	n := NewInt(10) | 
