| 
									
										
										
										
											2022-12-21 04:52:16 +08:00
										 |  |  | -- Copyright (C) 2019-2022  Igara Studio S.A. | 
					
						
							| 
									
										
										
										
											2018-08-23 01:56:07 +08:00
										 |  |  | -- Copyright (C) 2018  David Capello | 
					
						
							|  |  |  | -- | 
					
						
							|  |  |  | -- This file is released under the terms of the MIT license. | 
					
						
							|  |  |  | -- Read LICENSE.txt for more information. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | local rc = Rectangle() | 
					
						
							|  |  |  | assert(rc.x == 0) | 
					
						
							|  |  |  | assert(rc.y == 0) | 
					
						
							|  |  |  | assert(rc.width == 0) | 
					
						
							|  |  |  | assert(rc.height == 0) | 
					
						
							| 
									
										
										
										
											2018-09-01 02:07:51 +08:00
										 |  |  | assert(rc.isEmpty) | 
					
						
							| 
									
										
										
										
											2018-08-23 01:56:07 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | rc = Rectangle(1, 2, 3, 4) | 
					
						
							|  |  |  | assert(rc.x == 1) | 
					
						
							|  |  |  | assert(rc.y == 2) | 
					
						
							|  |  |  | assert(rc.width == 3) | 
					
						
							|  |  |  | assert(rc.height == 4) | 
					
						
							| 
									
										
										
										
											2022-12-21 05:04:51 +08:00
										 |  |  | assert(rc.origin == Point(1, 2)) | 
					
						
							|  |  |  | assert(rc.size == Size(3, 4)) | 
					
						
							| 
									
										
										
										
											2018-09-01 02:07:51 +08:00
										 |  |  | assert(not rc.isEmpty) | 
					
						
							| 
									
										
										
										
											2019-03-30 02:54:50 +08:00
										 |  |  | assert("Rectangle{ x=1, y=2, width=3, height=4 }" == tostring(rc)) | 
					
						
							| 
									
										
										
										
											2018-08-23 01:56:07 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | local rc2 = Rectangle(rc) | 
					
						
							|  |  |  | assert(rc2.x == 1) | 
					
						
							|  |  |  | assert(rc2.y == 2) | 
					
						
							|  |  |  | assert(rc2.width == 3) | 
					
						
							|  |  |  | assert(rc2.height == 4) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-21 04:52:16 +08:00
										 |  |  | rc.x = 5 | 
					
						
							|  |  |  | rc.y = 6 | 
					
						
							|  |  |  | rc.width = 7 | 
					
						
							|  |  |  | rc.height = 8 | 
					
						
							| 
									
										
										
										
											2018-08-23 01:56:07 +08:00
										 |  |  | assert(rc.x == 5) | 
					
						
							|  |  |  | assert(rc.y == 6) | 
					
						
							|  |  |  | assert(rc.width == 7) | 
					
						
							|  |  |  | assert(rc.height == 8) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-21 05:04:51 +08:00
										 |  |  | rc.origin = Point(10, 12) | 
					
						
							|  |  |  | assert(rc.x == 10) | 
					
						
							|  |  |  | assert(rc.y == 12) | 
					
						
							|  |  |  | assert(rc.width == 7) | 
					
						
							|  |  |  | assert(rc.height == 8) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rc.size = Size(32, 64) | 
					
						
							|  |  |  | assert(rc.x == 10) | 
					
						
							|  |  |  | assert(rc.y == 12) | 
					
						
							|  |  |  | assert(rc.width == 32) | 
					
						
							|  |  |  | assert(rc.height == 64) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 01:56:07 +08:00
										 |  |  | rc = Rectangle{x=2, y=3, width=4, height=5} | 
					
						
							|  |  |  | assert(rc.x == 2) | 
					
						
							|  |  |  | assert(rc.y == 3) | 
					
						
							|  |  |  | assert(rc.width == 4) | 
					
						
							|  |  |  | assert(rc.height == 5) | 
					
						
							| 
									
										
										
										
											2018-11-15 03:53:24 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-20 05:39:32 +08:00
										 |  |  | rc = Rectangle{6, 7, 8, 9} | 
					
						
							|  |  |  | assert(rc.x == 6) | 
					
						
							|  |  |  | assert(rc.y == 7) | 
					
						
							|  |  |  | assert(rc.width == 8) | 
					
						
							|  |  |  | assert(rc.height == 9) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-22 00:01:03 +08:00
										 |  |  | rc = Rectangle(Point(2, 3), Size(4, 5)) | 
					
						
							|  |  |  | assert(rc.x == 2) | 
					
						
							|  |  |  | assert(rc.y == 3) | 
					
						
							|  |  |  | assert(rc.width == 4) | 
					
						
							|  |  |  | assert(rc.height == 5) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-15 03:53:24 +08:00
										 |  |  | -- Rectangle:contains | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | local a = Rectangle{x=2, y=3, width=4, height=5} | 
					
						
							|  |  |  | local b = Rectangle{x=3, y=4, width=1, height=1} | 
					
						
							|  |  |  | assert(a:contains(b)) | 
					
						
							|  |  |  | assert(not b:contains(a)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | -- Rectangle:intersect | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | assert(a:intersects(b)) | 
					
						
							|  |  |  | assert(b == a:intersect(b)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a = Rectangle{x=2, y=3, width=4, height=5} | 
					
						
							|  |  |  | b = Rectangle{x=3, y=4, width=4, height=5} | 
					
						
							|  |  |  | c = Rectangle{x=3, y=4, width=3, height=4} | 
					
						
							|  |  |  | assert(c == a:intersect(b)) | 
					
						
							|  |  |  | assert(c == b:intersect(a)) | 
					
						
							| 
									
										
										
										
											2019-09-23 21:22:33 +08:00
										 |  |  | assert((a & b) == c) | 
					
						
							| 
									
										
										
										
											2018-11-15 03:53:24 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | -- Rectangle:union | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-23 21:22:33 +08:00
										 |  |  | c = Rectangle{x=2, y=3, width=5, height=6} | 
					
						
							|  |  |  | assert(c == a:union(b)) | 
					
						
							|  |  |  | assert(c == (a | b)) |