mirror of https://github.com/aseprite/aseprite.git
				
				
				
			
		
			
	
	
		
			122 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
		
		
			
		
	
	
			122 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
|  | -- Copyright (C) 2018  David Capello | ||
|  | -- | ||
|  | -- This file is released under the terms of the MIT license. | ||
|  | -- Read LICENSE.txt for more information. | ||
|  | 
 | ||
|  | -- Isolated selection | ||
|  | do | ||
|  |   local a = Selection() | ||
|  |   assert(a.bounds.x == 0) | ||
|  |   assert(a.bounds.y == 0) | ||
|  |   assert(a.bounds.width == 0) | ||
|  |   assert(a.bounds.height == 0) | ||
|  |   assert(a.isEmpty) | ||
|  | 
 | ||
|  |   a:select(1, 2, 3, 4) | ||
|  |   assert(a.bounds.x == 1) | ||
|  |   assert(a.bounds.y == 2) | ||
|  |   assert(a.bounds.width == 3) | ||
|  |   assert(a.bounds.height == 4) | ||
|  |   assert(not a.isEmpty) | ||
|  |   assert(a:contains(1, 2)) | ||
|  |   assert(a:contains(1+3-1, 2+4-1)) | ||
|  |   assert(not a:contains(0, 1)) | ||
|  |   assert(not a:contains(1+3, 2+4)) | ||
|  | 
 | ||
|  |   a:select{x=5, y=6, width=7, height=8} | ||
|  |   assert(a.bounds.x == 5) | ||
|  |   assert(a.bounds.y == 6) | ||
|  |   assert(a.bounds.width == 7) | ||
|  |   assert(a.bounds.height == 8) | ||
|  | 
 | ||
|  |   a:deselect() | ||
|  |   assert(a.bounds.x == 0) | ||
|  |   assert(a.bounds.y == 0) | ||
|  |   assert(a.bounds.width == 0) | ||
|  |   assert(a.bounds.height == 0) | ||
|  |   assert(a.isEmpty) | ||
|  |   assert(not a:contains(0, 0)) | ||
|  | 
 | ||
|  |   -- Constructor with rectangles | ||
|  |   local b = Selection(1, 2, 3, 4) | ||
|  |   assert(b.bounds == Rectangle(1, 2, 3, 4)) | ||
|  |   assert(b.origin == Point(1, 2)) | ||
|  | 
 | ||
|  |   -- Move | ||
|  |   b.origin = Point(5, 6) | ||
|  |   assert(b.bounds == Rectangle(5, 6, 3, 4)) | ||
|  |   assert(b.origin == Point(5, 6)) | ||
|  | end | ||
|  | 
 | ||
|  | -- Sprite Selection | ||
|  | do | ||
|  |   local spr = Sprite(32, 32) | ||
|  |   local sel = spr.selection | ||
|  |   assert(sel.bounds.x == 0) | ||
|  |   assert(sel.bounds.y == 0) | ||
|  |   assert(sel.bounds.width == 0) | ||
|  |   assert(sel.bounds.height == 0) | ||
|  | 
 | ||
|  |   sel:selectAll() | ||
|  |   assert(sel.bounds.x == 0) | ||
|  |   assert(sel.bounds.y == 0) | ||
|  |   assert(sel.bounds.width == spr.width) | ||
|  |   assert(sel.bounds.height == spr.height) | ||
|  | 
 | ||
|  |   sel:select(2, 3, 4, 5) | ||
|  |   assert(sel.bounds.x == 2) | ||
|  |   assert(sel.bounds.y == 3) | ||
|  |   assert(sel.bounds.width == 4) | ||
|  |   assert(sel.bounds.height == 5) | ||
|  | 
 | ||
|  |   sel.origin = Point(5, 6) | ||
|  |   assert(sel.bounds == Rectangle(5, 6, 4, 5)) | ||
|  | end | ||
|  | 
 | ||
|  | -- Comparison | ||
|  | do | ||
|  |   local a = Selection() | ||
|  |   local b = Selection() | ||
|  |   assert(a == b) | ||
|  | 
 | ||
|  |   a:select(0, 0, 1, 1) | ||
|  |   assert(a ~= b) | ||
|  | 
 | ||
|  |   b:add(a) | ||
|  |   assert(a == b) | ||
|  | 
 | ||
|  |   a:subtract(b) | ||
|  |   assert(a ~= b) | ||
|  | 
 | ||
|  |   b:subtract(b) | ||
|  |   assert(a == b) | ||
|  | end | ||
|  | 
 | ||
|  | -- Operations | ||
|  | do | ||
|  |   local a = Selection() | ||
|  |   a:select(2, 3, 4, 5) | ||
|  |   assert(a.bounds == Rectangle(2, 3, 4, 5)) | ||
|  | 
 | ||
|  |   a:subtract(2, 3, 4, 1) | ||
|  |   assert(a.bounds == Rectangle(2, 4, 4, 4)) | ||
|  | 
 | ||
|  |   assert(a:contains(3, 5)) | ||
|  |   a:subtract(3, 5, 1, 1) | ||
|  |   assert(not a:contains(3, 5)) | ||
|  |   assert(a.bounds == Rectangle(2, 4, 4, 4)) | ||
|  | 
 | ||
|  |   local b = Selection() | ||
|  |   assert(a.bounds == Rectangle(2, 4, 4, 4)) | ||
|  |   assert(b.isEmpty) | ||
|  |   a:subtract(b) -- This should be a no-op because b is empty | ||
|  |   assert(a.bounds == Rectangle(2, 4, 4, 4)) | ||
|  | 
 | ||
|  |   b:select(0, 0, 32, 32) | ||
|  |   assert(a ~= b) | ||
|  |   b:intersect(a) | ||
|  |   assert(a == b) | ||
|  |   assert(b.bounds == Rectangle(2, 4, 4, 4)) | ||
|  |   assert(b.bounds == Rectangle(2, 4, 4, 4)) | ||
|  | end |