mirror of
				https://github.com/vlang/v.git
				synced 2023-08-10 21:13:21 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			410 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			V
		
	
	
	
	
	
			
		
		
	
	
			410 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			V
		
	
	
	
	
	
| module time
 | |
| 
 | |
| fn assert_greater_time(ms int, t1 Time) {
 | |
| 	time.sleep_ms(ms)
 | |
| 	t2 := now()
 | |
| 	assert t2.gt(t1)
 | |
| }
 | |
| 
 | |
| // Tests the now in all platform and the gt operator function with at least ms resolution
 | |
| fn test_now_always_results_in_greater_time() {
 | |
| 	t1 := now()
 | |
| 	$if macos {
 | |
| 		assert_greater_time(1, t1)
 | |
| 		return
 | |
| 	}
 | |
| 	$if windows {
 | |
| 		// Lower resolution of time for windows
 | |
| 		assert_greater_time(15, t1)
 | |
| 		return
 | |
| 	}
 | |
| 	$if linux {
 | |
| 		assert_greater_time(1, t1)
 | |
| 		return
 | |
| 	}
 | |
| 	$if solaris {
 | |
| 		assert_greater_time(1, t1)
 | |
| 		return
 | |
| 	}
 | |
| 	// other platforms may have more accurate resolution,
 | |
| 	// but we do not know that ... so wait at least 1s:
 | |
| 	assert_greater_time(1001, t1)
 | |
| }
 | |
| 
 | |
| fn test_time1_should_be_same_as_time2() {
 | |
| 
 | |
| 	t1 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 100
 | |
| 	})
 | |
| 
 | |
| 	t2 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 100
 | |
| 	})
 | |
| 
 | |
| 	assert t1.eq(t2)
 | |
| }
 | |
| 
 | |
| fn test_time1_should_not_be_same_as_time2() {
 | |
| 
 | |
| 	t1 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 100
 | |
| 	})
 | |
| 
 | |
| 	// Difference is one microsecond
 | |
| 	t2 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 101
 | |
| 	})
 | |
| 
 | |
| 	t3 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 0
 | |
| 	})
 | |
| 
 | |
| 	// Difference is one second
 | |
| 	t4 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 4
 | |
| 		microsecond: 0
 | |
| 	})
 | |
| 
 | |
| 	assert t1.ne(t2)
 | |
| 	assert t3.ne(t4)
 | |
| }
 | |
| 
 | |
| fn test_time1_should_be_greater_than_time2() {
 | |
| 
 | |
| 	t1 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 102
 | |
| 	})
 | |
| 
 | |
| 	// Difference is one microsecond
 | |
| 	t2 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 101
 | |
| 	})
 | |
| 
 | |
| 	t3 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 5
 | |
| 		microsecond: 0
 | |
| 	})
 | |
| 
 | |
| 	// Difference is one second
 | |
| 	t4 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 4
 | |
| 		microsecond: 0
 | |
| 	})
 | |
| 
 | |
| 	assert t1.gt(t2)
 | |
| 	assert t3.gt(t4)
 | |
| }
 | |
| 
 | |
| 
 | |
| fn test_time2_should_be_less_than_time1() {
 | |
| 
 | |
| 	t1 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 102
 | |
| 	})
 | |
| 
 | |
| 	// Difference is one microsecond
 | |
| 	t2 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 101
 | |
| 	})
 | |
| 
 | |
| 	t3 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 0
 | |
| 	})
 | |
| 
 | |
| 	// Difference is one second
 | |
| 	t4 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 2
 | |
| 		microsecond: 0
 | |
| 	})
 | |
| 
 | |
| 	assert t2.lt(t1)
 | |
| 	assert t4.lt(t3)
 | |
| }
 | |
| 
 | |
| fn test_time1_should_be_greater_or_equal_to_time2_when_gt() {
 | |
| 
 | |
| 	t1 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 102
 | |
| 	})
 | |
| 
 | |
| 	// Difference is one microsecond
 | |
| 	t2 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 101
 | |
| 	})
 | |
| 
 | |
| 	t3 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 5
 | |
| 		microsecond: 0
 | |
| 	})
 | |
| 
 | |
| 	// Difference is one second
 | |
| 	t4 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 4
 | |
| 		microsecond: 0
 | |
| 	})
 | |
| 
 | |
| 	assert t1.ge(t2)
 | |
| 	assert t3.ge(t4)
 | |
| }
 | |
| 
 | |
| fn test_time1_should_be_greater_or_equal_to_time2_when_eq() {
 | |
| 
 | |
| 	t1 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 100
 | |
| 	})
 | |
| 
 | |
| 	// Difference is one microsecond
 | |
| 	t2 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 100
 | |
| 	})
 | |
| 
 | |
| 	t3 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 0
 | |
| 	})
 | |
| 
 | |
| 	// Difference is one second
 | |
| 	t4 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 0
 | |
| 	})
 | |
| 
 | |
| 	assert t1.ge(t2)
 | |
| 	assert t3.ge(t4)
 | |
| }
 | |
| 
 | |
| fn test_time1_should_be_less_or_equal_to_time2_when_lt() {
 | |
| 
 | |
| 	t1 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 100
 | |
| 	})
 | |
| 
 | |
| 	// Difference is one microsecond
 | |
| 	t2 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 101
 | |
| 	})
 | |
| 
 | |
| 	t3 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 0
 | |
| 	})
 | |
| 
 | |
| 	// Difference is one second
 | |
| 	t4 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 4
 | |
| 		microsecond: 0
 | |
| 	})
 | |
| 
 | |
| 	assert t1.le(t2)
 | |
| 	assert t3.le(t4)
 | |
| }
 | |
| 
 | |
| fn test_time1_should_be_less_or_equal_to_time2_when_eq() {
 | |
| 
 | |
| 	t1 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 100
 | |
| 	})
 | |
| 
 | |
| 	// Difference is one microsecond
 | |
| 	t2 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 100
 | |
| 	})
 | |
| 
 | |
| 	t3 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 0
 | |
| 	})
 | |
| 
 | |
| 	// Difference is one second
 | |
| 	t4 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 0
 | |
| 	})
 | |
| 
 | |
| 	assert t1.le(t2)
 | |
| 	assert t3.le(t4)
 | |
| }
 | |
| 
 | |
| fn test_time2_copied_from_time1_should_be_equal() {
 | |
| 	t1 := new_time( Time {
 | |
| 		year: 2000
 | |
| 		month: 5
 | |
| 		day: 10
 | |
| 		hour: 22
 | |
| 		minute: 11
 | |
| 		second: 3
 | |
| 		microsecond: 100
 | |
| 	})
 | |
| 	t2 := new_time(t1)
 | |
| 
 | |
| 	assert t2.eq(t1)
 | |
| }
 | 
