Prolog "intnum"
/**
* Warranty & Liability
* To the extent permitted by applicable law and unless explicitly
* otherwise agreed upon, XLOG Technologies AG makes no warranties
* regarding the provided information. XLOG Technologies AG assumes
* no liability that any problems might be solved with the information
* provided by XLOG Technologies AG.
*
* Rights & License
* All industrial property rights regarding the information - copyright
* and patent rights in particular - are the sole property of XLOG
* Technologies AG. If the company was not the originator of some
* excerpts, XLOG Technologies AG has at least obtained the right to
* reproduce, change and translate the information.
*
* Reproduction is restricted to the whole unaltered document. Reproduction
* of the information is only allowed for non-commercial uses. Selling,
* giving away or letting of the execution of the library is prohibited.
* The library can be distributed as part of your applications and libraries
* for execution provided this comment remains unchanged.
*
* Restrictions
* Only to be distributed with programs that add significant and primary
* functionality to the library. Not to be distributed with additional
* software intended to replace any components of the library.
*
* Trademarks
* Jekejeke is a registered trademark of XLOG Technologies AG.
*/
:- multifile runner_case/5.
:- discontiguous(runner_case/5).
:- multifile(runner_pred/5).
:- discontiguous(runner_pred/5).
:- multifile(runner_file/3).
runner_file(adapter, intnum, 'XLOG 1.2 intnum').
/****************************************************************/
/* intatom.p extras */
/****************************************************************/
/* atom_number(X, Y) */
runner_pred(atom_number, 2, adapter, struc, 'XLOG 1.2.1').
runner_case(atom_number, 2, adapter, struc, 'XLOG 1.2.1, XLOG 1') :-
atom_number(X, 33), X == '33'.
runner_case(atom_number, 2, adapter, struc, 'XLOG 1.2.1, XLOG 2') :-
atom_number('33.0', X), X == 33.0.
runner_case(atom_number, 2, adapter, struc, 'XLOG 1.2.1, XLOG 3') :-
atom_number('3.3e+01', 33.0).
runner_case(atom_number, 2, adapter, struc, 'XLOG 1.2.1, XLOG 4') :-
X is 23/10,
atom_number(Y, X), Y == '2.3'.
runner_case(atom_number, 2, adapter, struc, 'XLOG 1.2.1, XLOG 5') :-
X is 3.703703670370371e29 / 1.2345678901234568e29,
atom_number(Y, X), Y == '3.0000000000000004'.
runner_case(atom_number, 2, adapter, struc, 'XLOG 1.2.1, XLOG 6') :-
X is 0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1,
atom_number(Y, X), Y == '0.7999999999999999'.
runner_case(atom_number, 2, adapter, struc, 'XLOG 1.2.1, XLOG 7') :-
X is 10000000000000000.0,
atom_number(Y, X), Y == '1.0e16'.
runner_case(atom_number, 2, adapter, struc, 'XLOG 1.2.1, XLOG 8') :-
catch(atom_number('0xf', _), error(E,_), true),
E == syntax_error(illegal_number).
runner_case(atom_number, 2, adapter, struc, 'XLOG 1.2.1, XLOG 9') :-
catch(atom_number(_, foo), error(E,_), true),
E == type_error(number,foo).
runner_case(atom_number, 2, adapter, struc, 'XLOG 1.2.1, XLOG 10') :-
catch(atom_number(_, _), error(E,_), true),
E == instantiation_error.
/* atom_integer(X, Y, Z) */
runner_pred(atom_integer, 3, adapter, intnum, 'XLOG 1.2.2').
runner_case(atom_integer, 3, adapter, intnum, 'XLOG 1.2.2, XLOG 1') :-
atom_integer(T, 10, 33), T == '33'.
runner_case(atom_integer, 3, adapter, intnum, 'XLOG 1.2.2, XLOG 2') :-
atom_integer('-25', 10, A), A == -25.
runner_case(atom_integer, 3, adapter, intnum, 'XLOG 1.2.2, XLOG 3') :-
atom_integer(X, 16, 47806), X == 'babe'.
runner_case(atom_integer, 3, adapter, intnum, 'XLOG 1.2.2, XLOG 4') :-
atom_integer('BABE', 16, X), X = 47806.
runner_case(atom_integer, 3, adapter, intnum, 'XLOG 1.2.2, XLOG 5') :-
catch(atom_integer('1+2', 10, _), error(E,_), true),
E == syntax_error(illegal_number).
runner_case(atom_integer, 3, adapter, intnum, 'XLOG 1.2.2, XLOG 6') :-
catch(atom_integer(foo(bar), 10, _), error(E, _), true),
E == type_error(atom, foo(bar)).
runner_case(atom_integer, 3, adapter, intnum, 'XLOG 1.2.2, XLOG 7') :-
catch(atom_integer(_, _, 33), error(E, _), true),
E == instantiation_error.
runner_case(atom_integer, 3, adapter, intnum, 'XLOG 1.2.2, XLOG 8') :-
catch(atom_integer('25', 0, _), error(E,_), true),
E == domain_error(radix, 0).
runner_case(atom_integer, 3, adapter, intnum, 'XLOG 1.2.2, XLOG 9') :-
atom_integer('012', 10, 12).
/*******************************************************************/
/* Code Type etc.. */
/*******************************************************************/
/* code_category(C, T) */
runner_pred(code_category,2, adapter, intnum, 'XLOG 1.2.3').
runner_case(code_category,2, adapter, intnum, 'XLOG 1.2.3, XLOG 1') :-
code_category(0' ,T), T == 12.
runner_case(code_category,2, adapter, intnum, 'XLOG 1.2.3, XLOG 2') :-
code_category(0'\n, T), T == 15.
runner_case(code_category,2, adapter, intnum, 'XLOG 1.2.3, XLOG 3') :-
code_category(0'!, T), T == 24.
runner_case(code_category,2, adapter, intnum, 'XLOG 1.2.3, XLOG 4') :-
code_category(0'A, T), T == 1.
runner_case(code_category,2, adapter, intnum, 'XLOG 1.2.3, XLOG 5') :-
code_category(0x200000, T), T == 0.
runner_case(code_category,2, adapter, intnum, 'XLOG 1.2.3, XLOG 6') :-
code_category(0xA7C1, T),
T == 2.
runner_case(code_category,2, adapter, intnum, 'XLOG 1.2.3, XLOG 7') :-
code_category(0x10599, T),
T == 2.
runner_case(code_category,2, adapter, intnum, 'XLOG 1.2.3, XLOG 8') :-
catch(code_category(_,_), error(E,_), true),
E == instantiation_error.
runner_case(code_category,2, adapter, intnum, 'XLOG 1.2.3, XLOG 9') :-
catch(code_category(foo,_), error(E,_), true),
E == type_error(integer, foo).
/* code_numeric(C, V) */
runner_pred(code_numeric,2, adapter, intnum, 'XLOG 1.2.4').
runner_case(code_numeric,2, adapter, intnum, 'XLOG 1.2.4, XLOG 1') :-
code_numeric(0'a, V), V == 10.
runner_case(code_numeric,2, adapter, intnum, 'XLOG 1.2.4, XLOG 2') :-
code_numeric(0'9, V), V == 9.
runner_case(code_numeric,2, adapter, intnum, 'XLOG 1.2.4, XLOG 3') :-
code_numeric(0'=, V), V == -1.
runner_case(code_numeric,2, adapter, intnum, 'XLOG 1.2.4, XLOG 4') :-
code_numeric(0x0D75, V), V == -1.
runner_case(code_numeric,2, adapter, intnum, 'XLOG 1.2.4, XLOG 5') :-
code_numeric(0x216E, V), V == -1.
runner_case(code_numeric,2, adapter, intnum, 'XLOG 1.2.4, XLOG 6') :-
code_numeric(0x200000, V), V == -1.
runner_case(code_numeric,2, adapter, intnum, 'XLOG 1.2.4, XLOG 7') :-
code_numeric(0x11F53, V),
V == 3.
runner_case(code_numeric,2, adapter, intnum, 'XLOG 1.2.4, XLOG 8') :-
catch(code_numeric(_,_), error(E,_), true),
E == instantiation_error.
runner_case(code_numeric,2, adapter, intnum, 'XLOG 1.2.4, XLOG 9') :-
catch(code_numeric(foo,_), error(E,_), true),
E == type_error(integer, foo).