/*
* %CopyrightBegin%
*
* Copyright Ericsson AB 1997-2009. All Rights Reserved.
*
* The contents of this file are subject to the Erlang Public License,
* Version 1.1, (the "License"); you may not use this file except in
* compliance with the License. You should have received a copy of the
* Erlang Public License along with this software. If not, it can be
* retrieved online at http://www.erlang.org/.
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights 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);
}