Merge delete and fixe row tests
This commit is contained in:
commit
84a3075bc8
14
solution.pl
14
solution.pl
|
@ -68,7 +68,7 @@ row(Table, Row) :-
|
|||
length(Cols, L),
|
||||
length(Row, L),
|
||||
apply(Table, Row)
|
||||
); fail.
|
||||
); throw("Table doesn't exist").
|
||||
|
||||
:- dynamic rows/1.
|
||||
/*
|
||||
|
@ -153,15 +153,20 @@ prompt, but which may include selectors. Selectors are terms of the form
|
|||
delete(Table, Conds) :-
|
||||
(tabl(Table, _) ->
|
||||
row(Table, Row),
|
||||
does_match(Conds, Table, Row)
|
||||
does_match(Conds, Table, Row),
|
||||
Term =.. [Table | Row],
|
||||
retract(Term),
|
||||
fail
|
||||
;
|
||||
throw("Table doesn't exist")
|
||||
).
|
||||
|
||||
delete(_, _).
|
||||
|
||||
does_match([], _, _) :- !.
|
||||
|
||||
does_match([Cond|Rest], Table, Row) :-
|
||||
does_match([], _, _) :- !.
|
||||
|
||||
does_match([Cond|Rest], Table, Row) :-
|
||||
% Extract the operator, field and value from the condition
|
||||
Cond =.. [Operator | T],
|
||||
[+F, S] = T,
|
||||
|
@ -182,6 +187,7 @@ delete(Table, Conds) :-
|
|||
% Check the next condition
|
||||
does_match(Rest, Table, Row).
|
||||
|
||||
|
||||
:- dynamic selec/4.
|
||||
/*
|
||||
Note that the name of this predicate is selec (without t) for the simple
|
||||
|
|
6
tests.pl
6
tests.pl
|
@ -52,16 +52,16 @@ test(drop_inexistant, throws(_)) :-
|
|||
drop(foobar).
|
||||
|
||||
% Test if row/2 returns the different rows of a given table.
|
||||
test(rows, cleanup(cdrop(foo))) :-
|
||||
test(row, cleanup(cdrop(foo))) :-
|
||||
create_table(foo, [bar, baz]),
|
||||
insert(foo, [1, 2]),
|
||||
insert(foo, [3, 4]),
|
||||
rows(foo, Rows),
|
||||
row(foo, Rows),
|
||||
assertion(length(Rows,2)).
|
||||
|
||||
% Test if row/2 fails on an unknown table name.
|
||||
test(row_inexistant, throws(_)) :-
|
||||
rows(foo, _Row).
|
||||
row(foo, _Row).
|
||||
|
||||
% Test if rows/1 works when called for a given table name.
|
||||
test(rows, cleanup(cdrop(foo))) :-
|
||||
|
|
Loading…
Reference in New Issue