1 /******************************************************************************
2 * Copyright (c) 2000-2014 Ericsson Telecom AB
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 ******************************************************************************/
15 external function enc_conv(in R input) return octetstring
16 with { extension "prototype(convert) encode(XER:XER_EXTENDED)" }
18 external function dec_conv(in octetstring input) return R
19 with { extension "prototype(convert) decode(XER:XER_EXTENDED)" }
21 external function dec_fast(in octetstring input, out R ret)
22 with { extension "prototype(fast) decode(XER:XER_EXTENDED)" }
24 external function dec_bk(in octetstring input, out R ret) return integer
25 with { extension "prototype(backtrack) decode(XER:XER_EXTENDED)" }
27 external function dec_sl(inout octetstring input, out R ret) return integer
28 with { extension "prototype(sliding) decode(XER:XER_EXTENDED)" }
36 testcase t_pi() runs on pi
38 var octetstring encoded := enc_conv(c_r);
39 const octetstring comment := char2oct("<!-- nothing to see here -->");
40 encoded := comment & encoded & comment;
42 var R decoded_conv := dec_conv(encoded);
43 if (decoded_conv == c_r) { setverdict(pass); }
44 else { /*log(decoded_conv, "<>", c_r);*/ setverdict(fail, decoded_conv, "<>", c_r); }
46 var R decoded_fast, decoded_sliding, decoded_backtrack;
48 dec_fast(encoded, decoded_fast);
49 if (decoded_fast == c_r) { setverdict(pass); }
50 else { setverdict(fail); }
52 var integer i := dec_bk(encoded, decoded_backtrack);
53 if (i == 0){ setverdict(pass); }
54 else { setverdict(fail, "decoding failed"); }
55 if (decoded_backtrack == c_r) { setverdict(pass); }
56 else { setverdict(fail, decoded_backtrack, "<>", c_r); }
58 i := dec_sl(encoded, decoded_sliding);
59 if (i == 0){ setverdict(pass); }
60 else { setverdict(fail, "decoding failed"); }
61 if (decoded_sliding == c_r) { setverdict(pass); }
62 else { setverdict(fail, decoded_sliding, "<>", c_r); }