package util

import (
	"testing"
)

func TestLimiter_Add(t *testing.T) {
	l := NewLimiter(10)
	if err := l.Add(5); err != nil {
		t.Fatal(err)
	}
	if err := l.Add(5); err != nil {
		t.Fatal(err)
	}
	if err := l.Add(5); err != ErrLimitReached {
		t.Fatalf("expected ErrLimitReached, got %#v", err)
	}
}

func TestLimiter_AddSub(t *testing.T) {
	l := NewLimiter(10)
	l.Add(5)
	if l.Value() != 5 {
		t.Fatalf("expected value to be %d, got %d", 5, l.Value())
	}
	l.Sub(2)
	if l.Value() != 3 {
		t.Fatalf("expected value to be %d, got %d", 3, l.Value())
	}
}