package main

import "testing"

func TestaddCounter(t *testing.T) {
	s1 := &point{
		Name:  "my counter",
		Type:  counter,
		Value: int64(10),
	}

	s2 := &point{
		Name:  "my counter",
		Type:  counter,
		Value: int64(5),
	}

	err := s1.add(s2)
	if err != nil {
		t.Error(err)
	}

	if expect := int64(15); s1.Value != expect {
		t.Errorf("expected '%d', got '%d'", expect, s1.Value)
	}

	s3 := &point{
		Name:  "my gauge",
		Type:  gauge,
		Value: int64(10),
	}

	err = s1.add(s3)
	if err == nil {
		t.Errorf("incompatible point types should raise error")
	}
}

func TestaddGauge(t *testing.T) {
	s1 := &point{
		Name:  "my gauge",
		Type:  gauge,
		Value: int64(10),
	}

	s2 := &point{
		Name:  "my gauge",
		Type:  gauge,
		Value: int64(5),
	}

	err := s1.add(s2)
	if err != nil {
		t.Error(err)
	}

	if want, got := int64(5), s1.Value; want != got {
		t.Errorf("want '%d', got '%d'", want, got)
	}

	s3 := &point{
		Name:  "my counter",
		Type:  counter,
		Value: int64(10),
	}

	err = s1.add(s3)
	if err == nil {
		t.Errorf("incompatible point types should raise error")
	}
}