package clock

import "fmt"

// TestVersion is for exercism
const TestVersion = 2

// Clock is an int representing the time of day
type Clock int

// Time returns a Clock representing the given hour & minute
func Time(hour, minute int) Clock {
	return TimeFromMinutes(hour*60 + minute)
}

// String returns a string representation of Clock
func (c Clock) String() string {
	return fmt.Sprintf("%02d:%02d", c/60, c%60)
}

// Add adds minutes to the clock
func (c Clock) Add(minutes int) Clock {
	return TimeFromMinutes(int(c) + minutes)
}

// TimeFromMinutes takes a minutes integer value and returns a Clock
func TimeFromMinutes(minutes int) Clock {
	for minutes < 0 {
		// Keep adding 24 hours to the minutes value until it's positive
		minutes = minutes + (24 * 60)
	}
	minutes = minutes % (24 * 60)
	return Clock(minutes)
}
