return 1;
}
+/* Replace the topmost selection in the stack with a clone of it. */
/* local sel = selection.clone(sel); */
static int
l_selection_clone(L)
{
struct selectionvar *sel = l_selection_check(L, 1);
struct selectionvar *tmp;
- /* int x,y; */ /* REVIEW: unreferenced */
lua_pop(L, 1);
(void) l_selection_new(L);
tmp = l_selection_check(L, 1);
/* local s = selection.negate(sel); */
/* local s = selection.negate(); */
+/* local s = sel:negate(); */
static int
l_selection_not(L)
lua_State *L;
{
int argc = lua_gettop(L);
- struct selectionvar *sel;
+ struct selectionvar *sel, *sel2;
- if (argc == 0)
+ if (argc == 0) {
(void) l_selection_new(L);
- sel = l_selection_check(L, 1);
- selection_not(sel);
+ sel = l_selection_check(L, 1);
+ selection_not(sel);
+ } else {
+ sel = l_selection_check(L, 1);
+ (void) l_selection_clone(L);
+ sel2 = l_selection_check(L, 1);
+ selection_not(sel2);
+ }
lua_settop(L, 1);
return 1;
}
-
-- Test the selection
-function test_selection()
+-- test selection parameters
+function test_selection_params()
local sel = selection.new();
-- test set & get
local sel2 = selection.clone(sel);
local sel3 = sel2:clone();
-end -- selection_tests()
+
+end -- test_selection_params
+
+-- test negation
+function test_sel_negate()
+ local sela = selection.negate();
+ local selb = sela:negate();
+
+ for x = 0,nhc.COLNO - 2 do
+ for y = 0,nhc.ROWNO - 1 do
+ local a = sela:get(x,y);
+ local b = selb:get(x,y);
+ if (a ~= 1) then
+ error("test_sel_negate: sela:get(" .. x .. "," .. y .. ")==" .. a);
+ end
+ if (b ~= 0) then
+ error("test_sel_negate: selb:get(" .. x .. "," .. y .. ")==" .. b);
+ end
+ end
+ end
+end -- test_sel_negate
-test_selection();
+test_selection_params();
+test_sel_negate();