Пример #1
0
// Neg value make sure 'val' is not updated
func TestMoneyNegNotMutable(t *testing.T) {
	val := money.Money{M: 123456}
	neg := val.Neg()

	if val.Valuei() != int64(123456) {
		t.Error("val should be int64 '123456'", val.Valuei())
	}

	if val.Valuef() != float64(1234.56) {
		t.Error("val should be int64 '1234.56'", val.Valuef())
	}

	if neg.Valuei() != int64(-123456) {
		t.Error("neg.Valuei should be int64 '-123456'", neg.Valuei())
	}

	if neg.Valuef() != float64(-1234.56) {
		t.Error("neg.Valuef should be float64 '-1234.56'", neg.Valuef())
	}

	if val.StringD() != "1234.56" {
		t.Error("val.StringD() should be '1234.56'", val.StringD())
	}
	// TODO oddity for negative money values!!!!
	if neg.StringD() != "-1234.56" {
		t.Error("neg.StringD() should be '-1234.56'", neg.StringD())
	}
}
Пример #2
0
func TestMoneyUpdateChangesOriginalValue(t *testing.T) {
	m := money.Money{M: 67}
	m.Updatei(int64(6700))
	if m.Valuei() != int64(6700) {
		t.Error("original vlaue should be updated to '67.00' but got: ", m.Valuei())
	}
}
Пример #3
0
// check multiplication is good but also that original values are not modified
func TestMoneyMul(t *testing.T) {
	m1 := money.Money{M: 67}   //67 cents!!
	m2 := money.Money{M: 6700} // 67 dollars
	res := m2.Mul(&m1)
	finResi := int64(4489)    // 44 dollars and 89 cents
	finResf := float64(44.89) // 44 dollars and 89 cents

	if res.Valuei() != finResi {
		t.Error("expected '4489' got: ", res.Valuei())
	}

	if res.Valuef() != finResf {
		t.Error("expected '44.89' got: ", res.Valuef())
	}

	if m1.Valuei() != int64(67) {
		t.Error("expected '67' got: ", m1.Valuei())
	}

	if m2.Valuei() != int64(6700) {
		t.Error("expected '6700' got: ", m2.Valuei())
	}

	if m1.Valuef() != float64(0.67) {
		t.Error("expected '0.67' got: ", m1.Valuef())
	}

	if m2.Valuef() != float64(67.00) {
		t.Error("expected '67.00' got: ", m2.Valuef())
	}

	if res.StringD() != "44.89" {
		t.Error("expected '44.89' got: ", res.StringD())
	}
}
Пример #4
0
// check division is good but also that original values are not modified
func TestMoneyDiv(t *testing.T) {
	m1 := money.Money{M: 67}   //67 cents!!
	m2 := money.Money{M: 6700} // 67 dollars
	res := m2.Div(&m1)
	finResi := int64(10000)
	finResf := float64(100.00)

	if res.Valuei() != finResi {
		t.Error("expected '10000' got: ", res.Valuei())
	}

	if res.Valuef() != finResf {
		t.Error("expected '100.00' got: ", res.Valuef())
	}

	if m1.Valuei() != int64(67) {
		t.Error("expected '67' got: ", m1.Valuei())
	}

	if m2.Valuei() != int64(6700) {
		t.Error("expected '6700' got: ", m2.Valuei())
	}

	if m1.Valuef() != float64(0.67) {
		t.Error("expected '0.67' got: ", m1.Valuef())
	}

	if m2.Valuef() != float64(67.00) {
		t.Error("expected '67.00' got: ", m2.Valuef())
	}

	if res.StringD() != "100.00" {
		t.Error("expected '100.00' got: ", res.StringD())
	}
}
Пример #5
0
// check subtraction is good but also that original values are not modified
func TestMoneySub(t *testing.T) {
	m1 := money.Money{M: 67}
	m2 := money.Money{M: 6700}
	res := m2.Sub(&m1)
	finResi := int64(6633)
	finResf := float64(66.33)

	if res.Valuei() != finResi {
		t.Error("expected '6633' got: ", res.Valuei())
	}

	if res.Valuef() != finResf {
		t.Error("expected '66.33' got: ", res.Valuef())
	}

	if m1.Valuei() != int64(67) {
		t.Error("expected '67' got: ", m1.Valuei())
	}

	if m2.Valuei() != int64(6700) {
		t.Error("expected '6700' got: ", m2.Valuei())
	}

	if m1.Valuef() != float64(0.67) {
		t.Error("expected '0.67' got: ", m1.Valuef())
	}

	if m2.Valuef() != float64(67.00) {
		t.Error("expected '67.00' got: ", m2.Valuef())
	}

	if res.StringD() != "66.33" {
		t.Error("expected '66.33' got: ", res.StringD())
	}
}
Пример #6
0
func TestMoneyVarsNotChanging(t *testing.T) {
	var val1 int64 = 67
	var val2 int64 = 6700
	m1 := money.Money{M: val1}
	m2 := money.Money{M: val2}
	if m1.Valuei() != val1 {
		t.Error("expected '67' got: ", m1.Valuei())
	}

	if m2.Valuei() != val2 {
		t.Error("expected '6700' got: ", m2.Valuei())
	}
}
Пример #7
0
func TestMoneyValueIntAndFloat(t *testing.T) {
	val := money.Money{M: 123456}

	if val.Valuei() != int64(123456) {
		t.Error("Valuei() should be int64 '123456'", val.Valuei())
	}

	if val.Valuef() != float64(1234.56) {
		t.Error("Valuef() should be float64 '123456'", val.Valuef())
	}

	if val.ValueiTrunc() != int64(1234) {
		t.Error("ValueiTrunc() should be int64 '1234'", val.ValueiTrunc())
	}

	if val.StringD() != "1234.56" {
		t.Error("money struct init StringD() should be value '1234.56'", val.StringD())
	}

	if val.StringC() != "1234,56" {
		t.Error("money struct init StringC() should be value '1234,56'", val.StringC())
	}
}
Пример #8
0
// check addition is good but also that original values are not modified
func TestMoneyAdd(t *testing.T) {
	m1 := money.Money{M: int64(67)}
	m2 := money.Money{M: int64(6700)}
	res := m1.Add(&m2)
	finResi := int64(6767)
	finResf := float64(67.67)

	if res.Valuei() != finResi {
		t.Error("expected '6767' got: ", res.Valuei())
	}

	if res.Valuef() != finResf {
		t.Error("expected '6767' got: ", res.Valuef())
	}

	if m1.Valuei() != int64(67) {
		t.Error("expected '67' got: ", m1.Valuei())
	}

	if m2.Valuei() != int64(6700) {
		t.Error("expected '6700' got: ", m2.Valuei())
	}

	if m1.Valuef() != float64(0.67) {
		t.Error("expected '0.67' got: ", m1.Valuef())
	}

	if m2.Valuef() != float64(67.00) {
		t.Error("expected '67.00' got: ", m2.Valuef())
	}

	if res.StringD() != "67.67" {
		t.Error("expected '67.67' got: ", res.StringD())
	}

	if res.StringC() != "67,67" {
		t.Error("expected '67,67' got: ", res.StringC())
	}
}
Пример #9
0
// verify subtracting negatives with updates does UPDATE and change original values
// and returns correct results
func TestMoneyNegativeSubUpdate(t *testing.T) {
	var val1Neg int64 = -1   //-0.01 cents
	var val2Pos int64 = 6700 //-67.00 dollars
	m1Neg := money.Money{}
	m2Pos := money.Money{}
	m1SetNeg := m1Neg.Updatei(val1Neg)
	m2SetPos := m2Pos.Updatei(val2Pos)
	resNeg := m1SetNeg.Sub(m2SetPos)

	vali := resNeg.Valuei()
	valf := resNeg.Valuef()

	if vali != int64(-6701) {
		t.Error("expected negative '-6701' got: ", vali)
	}

	if valf != float64(-67.01) {
		t.Error("expected negative '-67.01' got: ", valf)
	}

	// verify return values from update were set correctly
	if m1SetNeg.Valuei() != val1Neg {
		t.Error("expected negative '-1' got: ", m1SetNeg.Valuei())
	}

	if m2SetPos.Valuei() != val2Pos {
		t.Error("expected negative '6700' got: ", m2SetPos.Valuei())
	}

	// verify original values for an update were updated
	if m1Neg.Valuei() != val1Neg {
		t.Error("expected negative '-1' got: ", m1Neg.Valuei())
	}

	if m2Pos.Valuei() != val2Pos {
		t.Error("expected negative '6700' got: ", m2Pos.Valuei())
	}
}
Пример #10
0
func TestMoneyAbs(t *testing.T) {
	v1 := int64(7839)
	v2 := float64(38261748.09)
	m1 := money.Money{M: -v1}
	m2 := money.Money{}
	m2.Updatef(-v2)

	m1abs := m1.Abs()
	m2abs := m2.Abs()

	m1pos := money.Money{M: v1}
	m2pos := money.Money{}
	m2pos.Updatef(v2)

	if m1abs.Valuei() != m1pos.Valuei() {
		t.Error("expected '7839' got: ", m1abs.Valuei())
	}

	if m2abs.Valuei() != m2pos.Valuei() {
		t.Error("expected '3826174809' got: ", m2abs.Valuei())
	}

	if m1.Abs().Valuei() != m1pos.Valuei() {
		t.Error("expected '7839' got: ", m1.Abs().Valuei())
	}

	if m2.Abs().Valuei() != m2pos.Valuei() {
		t.Error("expected '3826174809' got:", m2.Abs().Valuei())
	}

	//verify original values are still negative
	if m1.Valuei() != -m1pos.Valuei() {
		t.Error("expected '-7839' got: ", m1.Valuei())
	}

	if m2.Valuei() != -m2pos.Valuei() {
		t.Error("expected '-3826174809' got: ", m2.Valuei())
	}
}