time: use operator overloading (#7882)
							parent
							
								
									ad8177ef2e
								
							
						
					
					
						commit
						7c290a7fe8
					
				| 
						 | 
				
			
			@ -1,23 +1,23 @@
 | 
			
		|||
module time
 | 
			
		||||
 | 
			
		||||
// eq returns true if provided time is equal to time
 | 
			
		||||
// operator `==` returns true if provided time is equal to time
 | 
			
		||||
[inline]
 | 
			
		||||
pub fn (t1 Time) eq(t2 Time) bool {
 | 
			
		||||
pub fn (t1 Time) == (t2 Time) bool {
 | 
			
		||||
	if t1.unix == t2.unix && t1.microsecond == t2.microsecond {
 | 
			
		||||
		return true
 | 
			
		||||
	}
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ne returns true if provided time is not equal to time
 | 
			
		||||
// operator `!=` returns true if provided time is not equal to time
 | 
			
		||||
[inline]
 | 
			
		||||
pub fn (t1 Time) ne(t2 Time) bool {
 | 
			
		||||
	return !t1.eq(t2)
 | 
			
		||||
pub fn (t1 Time) != (t2 Time) bool {
 | 
			
		||||
	return !(t1 == t2)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// lt returns true if provided time is less than time
 | 
			
		||||
// operator `<` returns true if provided time is less than time
 | 
			
		||||
[inline]
 | 
			
		||||
pub fn (t1 Time) lt(t2 Time) bool {
 | 
			
		||||
pub fn (t1 Time) < (t2 Time) bool {
 | 
			
		||||
	if t1.unix < t2.unix || (t1.unix == t2.unix && t1.microsecond < t2.microsecond) {
 | 
			
		||||
		return true
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -27,12 +27,12 @@ pub fn (t1 Time) lt(t2 Time) bool {
 | 
			
		|||
// le returns true if provided time is less or equal to time
 | 
			
		||||
[inline]
 | 
			
		||||
pub fn (t1 Time) le(t2 Time) bool {
 | 
			
		||||
	return t1.lt(t2) || t1.eq(t2)
 | 
			
		||||
	return t1 < t2 || t1 == t2
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// gt returns true if provided time is greater than time
 | 
			
		||||
// operator `>` returns true if provided time is greater than time
 | 
			
		||||
[inline]
 | 
			
		||||
pub fn (t1 Time) gt(t2 Time) bool {
 | 
			
		||||
pub fn (t1 Time) > (t2 Time) bool {
 | 
			
		||||
	if t1.unix > t2.unix || (t1.unix == t2.unix && t1.microsecond > t2.microsecond) {
 | 
			
		||||
		return true
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -42,7 +42,7 @@ pub fn (t1 Time) gt(t2 Time) bool {
 | 
			
		|||
// ge returns true if provided time is greater or equal to time
 | 
			
		||||
[inline]
 | 
			
		||||
pub fn (t1 Time) ge(t2 Time) bool {
 | 
			
		||||
	return t1.gt(t2) || t1.eq(t2)
 | 
			
		||||
	return t1 > t2 || t1 == t2
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Time subtract using eperator overloading
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@ module time
 | 
			
		|||
fn assert_greater_time(ms int, t1 Time) {
 | 
			
		||||
	sleep_ms(ms)
 | 
			
		||||
	t2 := now()
 | 
			
		||||
	assert t2.gt(t1)
 | 
			
		||||
	assert t2 > t1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Tests the now in all platform and the gt operator function with at least ms resolution
 | 
			
		||||
| 
						 | 
				
			
			@ -50,7 +50,7 @@ fn test_time1_should_be_same_as_time2() {
 | 
			
		|||
		second: 3
 | 
			
		||||
		microsecond: 100
 | 
			
		||||
	})
 | 
			
		||||
	assert t1.eq(t2)
 | 
			
		||||
	assert t1 == t2
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn test_time1_should_not_be_same_as_time2() {
 | 
			
		||||
| 
						 | 
				
			
			@ -92,8 +92,8 @@ fn test_time1_should_not_be_same_as_time2() {
 | 
			
		|||
		second: 4
 | 
			
		||||
		microsecond: 0
 | 
			
		||||
	})
 | 
			
		||||
	assert t1.ne(t2)
 | 
			
		||||
	assert t3.ne(t4)
 | 
			
		||||
	assert t1 != t2
 | 
			
		||||
	assert t3 != t4
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn test_time1_should_be_greater_than_time2() {
 | 
			
		||||
| 
						 | 
				
			
			@ -135,8 +135,8 @@ fn test_time1_should_be_greater_than_time2() {
 | 
			
		|||
		second: 4
 | 
			
		||||
		microsecond: 0
 | 
			
		||||
	})
 | 
			
		||||
	assert t1.gt(t2)
 | 
			
		||||
	assert t3.gt(t4)
 | 
			
		||||
	assert t1 > t2
 | 
			
		||||
	assert t3 > t4
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn test_time2_should_be_less_than_time1() {
 | 
			
		||||
| 
						 | 
				
			
			@ -178,8 +178,8 @@ fn test_time2_should_be_less_than_time1() {
 | 
			
		|||
		second: 2
 | 
			
		||||
		microsecond: 0
 | 
			
		||||
	})
 | 
			
		||||
	assert t2.lt(t1)
 | 
			
		||||
	assert t4.lt(t3)
 | 
			
		||||
	assert t2 < t1
 | 
			
		||||
	assert t4 < t3
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn test_time1_should_be_greater_or_equal_to_time2_when_gt() {
 | 
			
		||||
| 
						 | 
				
			
			@ -365,7 +365,7 @@ fn test_time2_copied_from_time1_should_be_equal() {
 | 
			
		|||
		microsecond: 100
 | 
			
		||||
	})
 | 
			
		||||
	t2 := new_time(t1)
 | 
			
		||||
	assert t2.eq(t1)
 | 
			
		||||
	assert t2 == t1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn test_subtract() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue