/* * %CopyrightBegin% * * Copyright Ericsson AB 1997-2016. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * %CopyrightEnd% */ #include "runner.h" /* * Purpose: Tests the erl_format() function. * Author: Bjorn Gustavsson */ static void send_format(char* format) { send_term(erl_format(format)); } TESTCASE(atoms) { erl_init(NULL, 0); send_format("''"); send_format("'a'"); send_format("'A'"); send_format("'abc'"); send_format("'Abc'"); send_format("'ab@c'"); send_format("'The rain in Spain stays mainly in the plains'"); send_format("a"); send_format("ab"); send_format("abc"); send_format("ab@c"); send_format(" abcdefghijklmnopq "); send_term(erl_format("~a", "")); send_term(erl_format("~a", "a")); send_term(erl_format("~a", "A")); send_term(erl_format("~a", "abc")); send_term(erl_format("~a", "Abc")); send_term(erl_format("~a", "ab@c")); send_term(erl_format("~a", "The rain in Spain stays mainly in the plains")); send_term(erl_format("~a", "a")); send_term(erl_format("~a", "ab")); send_term(erl_format("~a", "abc")); send_term(erl_format("~a","ab@c")); send_term(erl_format("~a", " abcdefghijklmnopq ")); report(1); } TESTCASE(tuples) { erl_init(NULL, 0); send_format("{}"); send_format("{a}"); send_format("{a, b}"); send_format("{a, b, c}"); send_format("{1}"); send_format("{[]}"); send_format("{[], []}"); send_format("{[], a, b, c}"); send_format("{[], a, [], b, c}"); send_format("{[], a, '', b, c}"); report(1); } TESTCASE(lists) { ETERM* a; ETERM* b; ETERM* c; erl_init(NULL, 0); send_format("[]"); send_format("[a]"); send_format("[a, b]"); send_format("[a, b, c]"); send_format("[1]"); send_format("[[]]"); send_format("[[], []]"); send_format("[[], a, b, c]"); send_format("[[], a, [], b, c]"); send_format("[[], a, '', b, c]"); b = erl_format("[{addr, ~s, ~i}]", "E-street", 42); a = erl_format("[{name, ~a}, {age, ~i}, {data, ~w}]", "Madonna", 21, b); send_term(a); erl_free_term(b); send_term(erl_format("[{pi, ~f}, {'cos(70)', ~f}]", 3.1415, 0.34202)); a = erl_mk_float(3.1415); b = erl_mk_float(0.34202); send_term(erl_format("[[pi, ~w], ['cos(70)', ~w]]", a, b)); erl_free_term(a); erl_free_term(b); a = erl_mk_float(3.1415); b = erl_mk_float(0.34202); c = erl_mk_empty_list(); send_term(erl_format("[[~a, ~w], ~w, [~s, ~w]]", "pi", a, c, "cos(70)", b)); erl_free_term(a); erl_free_term(b); erl_free_term(c); send_term(erl_format("[~i]", -1)); report(1); }