~statik/ubuntu/maverick/erlang/erlang-merge-testing

« back to all changes in this revision

Viewing changes to lib/erl_interface/test/ei_print_SUITE_data/ei_print_test.c

  • Committer: Elliot Murphy
  • Date: 2010-06-08 03:55:44 UTC
  • mfrom: (3.5.6 squeeze)
  • Revision ID: elliot@elliotmurphy.com-20100608035544-dd8zh2swk7jr5rz2
* Merge with Debian unstable; remaining Ubuntu changes:
  - Drop libwxgtk2.8-dev build dependency. Wx isn't in main, and not
    supposed to. (LP #438365)
  - Drop erlang-wx binary.
  - Drop erlang-wx dependency from -megaco, -common-test, and -reltool, they
    do not really need wx. Also drop it from -debugger; the GUI needs wx,
    but it apparently has CLI bits as well, and is also needed by -megaco,
    so let's keep the package for now.
* Added missing symlinks to /usr/include for a few new header files.
* Fixed generation of ${erlang-base:Depends} and ${erlang-x11:Depends}
  substitution variables.
* Added a fix for a re:compile/2 crash on a long regular expression.
* Changed urgency to medium as the change fixes a security bug.
* Manpages in section 1 are needed even if only arch-dependent packages are
  built. So, re-enabled them.
* Fixed HiPE architecture recognition for powerpc Debian architecture.
* Moved xsltproc and fop to build-depends-indep and do not build
  documentation if only architecture-specific packages are built.
* Refreshed all patches.
* Made Emacs look in man5 and man7 for Erlang manpages and added code
  skeleton files to erlang-mode package.
* New upstream release.
* Moved manpages from incorrect sections 4 and 6 to correct 5 and 7
  (closes: #498492).
* Made manpages regexp in Emacs mode match only 3erl pages in section 3.
* Removed docb_gen script which is no longer needed to build manpages.
* Added erlang-doc package which contains documentation in HTML and PDF
  formats. This package replaces erlang-doc-html package and it's easier
  to synchronize it with the main Erlang packages as it's built from
  a single source package (closes: #558451).
* Removed RPATH from ssl and crypto application binaries as required by
  Debian policy.
* Added libwxgtk2.4-dev and libwxgtk2.6-dev to build conflicts.
* Added a few dpendencies for erlang-dialyzer, erlang-et, erlang-observer
  and erlang-examples packages which now call functions from more modules
  than in 1:13.b.3.
* Added a workaround which disables vfork() for hppa architecture
  (closes: #562218).
* Strictened check for JDK 1.5 adding a call to String(int[], int, int)
  because GCJ 4.4 doesn't implement it and OpenJDK isn't available for all
  architectures.
* Fixed erlang-manpages package section.
* Made erlang-depends add only substvars which are requested in
  debian/control file. This minimizes number of warnings from dh_gencontrol.
  Also, improved descriptions of the functions in erlang-depends escript.
* Added erlang-erl-docgen package to erlang-nox dependencies.
* Made dummy packages erlang-nox and erlang-x11 architecture all.
* Cleaned up working with custom substitution variables in debian/rules.
* Reorganized debian/rules to ensure that manpages arent built twice, and
  aren't built at all if only architecture-dependent packages are requested.
* Fixed project links in README.Debian.
* Added a new package erlang-jinterface which provides tools for
  communication of Java programs with Erlang processes. This adds build
  depandency on default-jdk and as a result enables Java module for IDL
  compiler.
* Bumped standards version to 3.8.4.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * %CopyrightBegin%
 
3
 * 
 
4
 * Copyright Ericsson AB 2001-2009. All Rights Reserved.
 
5
 * 
 
6
 * The contents of this file are subject to the Erlang Public License,
 
7
 * Version 1.1, (the "License"); you may not use this file except in
 
8
 * compliance with the License. You should have received a copy of the
 
9
 * Erlang Public License along with this software. If not, it can be
 
10
 * retrieved online at http://www.erlang.org/.
 
11
 * 
 
12
 * Software distributed under the License is distributed on an "AS IS"
 
13
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
 
14
 * the License for the specific language governing rights and limitations
 
15
 * under the License.
 
16
 * 
 
17
 * %CopyrightEnd%
 
18
 */
 
19
 
 
20
#include "ei_runner.h"
 
21
 
 
22
/*
 
23
 * Purpose: Tests the ei_print() function.
 
24
 * Author:  Jakob 
 
25
 */
 
26
 
 
27
static void
 
28
send_printed3(char* format, char* p1, char* p2, int fl)
 
29
{
 
30
    char* b = NULL;
 
31
    char fn[100], * tmp = getenv("temp");
 
32
    FILE* f;
 
33
    int n, index = 0, ver;
 
34
    ei_x_buff x;
 
35
 
 
36
    ei_x_new(&x);
 
37
    if (fl) {
 
38
        ei_x_format(&x, format, *(float*)p1, *(float*)p2);
 
39
    } else {
 
40
        ei_x_format(&x, format, p1, p2);
 
41
    }
 
42
#ifdef VXWORKS
 
43
    tmp = ".";
 
44
#else
 
45
    if (tmp == NULL) tmp = "/tmp";
 
46
#endif
 
47
    strcpy(fn, tmp);
 
48
    strcat(fn, "/ei_print_test.txt");
 
49
    f = fopen(fn, "w+");
 
50
    ei_decode_version(x.buff, &index, &ver);
 
51
    n = ei_print_term(f, x.buff, &index);
 
52
    fseek(f, 0, SEEK_SET);
 
53
    b = malloc(n+1);
 
54
    fread(b, 1, n, f);
 
55
    b[n] = '\0';
 
56
    fclose(f);
 
57
    x.index = 0;
 
58
    ei_x_format(&x, "~s", b);
 
59
    send_bin_term(&x);
 
60
    free(b);
 
61
    ei_x_free(&x);
 
62
}
 
63
 
 
64
static void
 
65
send_printed(char* format)
 
66
{
 
67
    send_printed3(format, NULL, NULL, 0);
 
68
}
 
69
 
 
70
static void
 
71
send_printed2(char* format, char* p)
 
72
{
 
73
    send_printed3(format, p, NULL, 0);
 
74
}
 
75
 
 
76
static void send_printed3f(char* format, float f1, float f2)
 
77
{
 
78
    send_printed3(format, (char*)&f1, (char*)&f2, 1);
 
79
}
 
80
 
 
81
TESTCASE(atoms)
 
82
{
 
83
    send_printed("''");
 
84
    send_printed("'a'");
 
85
    send_printed("'A'");
 
86
    send_printed("'abc'");
 
87
    send_printed("'Abc'");
 
88
    send_printed("'ab@c'");
 
89
    send_printed("'The rain in Spain stays mainly in the plains'");
 
90
 
 
91
    send_printed("a");
 
92
    send_printed("ab");
 
93
    send_printed("abc");
 
94
    send_printed("ab@c");
 
95
    send_printed("   abcdefghijklmnopq   ");
 
96
 
 
97
    send_printed2("~a", "");
 
98
    send_printed2("~a", "a");
 
99
    send_printed2("~a", "A");
 
100
    send_printed2("~a", "abc");
 
101
    send_printed2("~a", "Abc");
 
102
    send_printed2("~a", "ab@c");
 
103
    send_printed2("~a", "The rain in Spain stays mainly in the plains");
 
104
 
 
105
    send_printed2("~a", "a");
 
106
    send_printed2("~a", "ab");
 
107
    send_printed2("~a", "abc");
 
108
    send_printed2("~a","ab@c");
 
109
    send_printed2("~a", "   abcdefghijklmnopq   ");
 
110
 
 
111
 
 
112
    report(1);
 
113
}
 
114
 
 
115
TESTCASE(tuples)
 
116
{
 
117
    send_printed("{}");
 
118
    send_printed("{a}");
 
119
    send_printed("{a, b}");
 
120
    send_printed("{a, b, c}");
 
121
    send_printed("{1}");
 
122
    send_printed("{[]}");
 
123
    send_printed("{[], []}");
 
124
    send_printed("{[], a, b, c}");
 
125
    send_printed("{[], a, [], b, c}");
 
126
    send_printed("{[], a, '', b, c}");
 
127
 
 
128
    report(1);
 
129
}
 
130
 
 
131
 
 
132
 
 
133
TESTCASE(lists)
 
134
{
 
135
    ei_x_buff x;
 
136
 
 
137
    send_printed("[]");
 
138
    send_printed("[a]");
 
139
    send_printed("[a, b]");
 
140
    send_printed("[a, b, c]");
 
141
    send_printed("[1]");
 
142
    send_printed("[[]]");
 
143
    send_printed("[[], []]");
 
144
    send_printed("[[], a, b, c]");
 
145
    send_printed("[[], a, [], b, c]");
 
146
    send_printed("[[], a, '', b, c]");
 
147
    send_printed("[[x, 2], [y, 3], [z, 4]]");
 
148
 
 
149
    /* more tests needed */
 
150
    send_printed3f("[{pi, ~f}, {'cos(70)', ~f}]",
 
151
                  (float)3.1415, (float)0.34202);
 
152
    send_printed3f("[[pi, ~f], ['cos(70)', ~f]]",
 
153
                  (float)3.1415, (float)0.34202);
 
154
 
 
155
    send_printed2("[~i]", (char*)-1);
 
156
    report(1);
 
157
}
 
158
 
 
159
TESTCASE(strings)
 
160
{
 
161
    ei_x_buff x;
 
162
 
 
163
    send_printed("\"\n\"");
 
164
    send_printed("\"\r\n\"");
 
165
    send_printed("\"a\"");
 
166
    send_printed("\"A\"");
 
167
    send_printed("\"0\"");
 
168
    send_printed("\"9\"");
 
169
    send_printed("\"The rain in Spain stays mainly in the plains\"");
 
170
    send_printed("\"   abcdefghijklmnopq   \"");
 
171
 
 
172
    report(1);
 
173
}
 
174
 
 
175