Files
mercury/tests/hard_coded/write_reg_1.m
Zoltan Somogyi 2cec289e70 Use test case numbers according to our conventions ...
... in the general and hard_coded test case directories.

tests/general/Mercury.options:
tests/general/Mmakefile:
tests/general/commit_bug_1.exp:
tests/general/commit_bug_1.m:
    Rename the commit_bug test case as commit_bug_1, due to the existence
    of commit_bug_2.

tests/general/intermod_type.m:
tests/general/intermod_type_helper_1.m:
    Rename intermod_type2.m as intermod_type_helper_1.m.

tests/general/nondet_ite_1.exp:
tests/general/nondet_ite_1.m:
    Rename the nondet_ite test case as nondet_ite_1, due to the existence
    of nondet_ite_[234].

tests/general/string_format_test_1.exp:
tests/general/string_format_test_1.exp2:
tests/general/string_format_test_1.exp3:
tests/general/string_format_test_1.m:
    Rename the string_format_test test case as string_format_test_1,
    due to the existence of string_format_test_[23].

tests/general/string_test_1.exp:
tests/general/string_test_1.m:
    Rename the string_test test case as string_test_1,
    due to the existence of string_test_2.

tests/hard_coded/Mercury.options:
tests/hard_coded/Mmakefile:
tests/hard_coded/array_test_1.exp:
tests/hard_coded/array_test_1.m:
tests/hard_coded/array_test_2.exp:
tests/hard_coded/array_test_2.m:
    Rename the array_test and array_test2 test cases as
    array_test_1 and array_test_2.

tests/hard_coded/bad_indirect_reuse_1.exp:
tests/hard_coded/bad_indirect_reuse_1.m:
tests/hard_coded/bad_indirect_reuse_2.exp:
tests/hard_coded/bad_indirect_reuse_2.m:
tests/hard_coded/bad_indirect_reuse_3.exp:
tests/hard_coded/bad_indirect_reuse_3.m:
tests/hard_coded/bad_indirect_reuse_4.exp:
tests/hard_coded/bad_indirect_reuse_4.m:
    Rename the bad_indirect_reuse and bad_indirect_reuse[234] test cases
    as bad_indirect_reuse_[1234].

tests/hard_coded/copy_pred_1.exp:
tests/hard_coded/copy_pred_1.m:
    Rename the copy_pred test case as copy_pred_1, due to the existence
    of copy_pred_2.

tests/hard_coded/curry_1.exp:
tests/hard_coded/curry_1.m:
tests/hard_coded/curry_2.exp:
tests/hard_coded/curry_2.m:
tests/hard_coded/curry_2_helper_1.m:
    Rename the curry and curry2 test cases as curry_1 and curry_2,
    and rename the curry2_test module as curry_2_helper_1.

tests/hard_coded/cycles_1.exp:
tests/hard_coded/cycles_1.m:
tests/hard_coded/cycles_2.exp:
tests/hard_coded/cycles_2.m:
    Rename the cycles and cycles2 test cases as cycles_1 and cycles_2.

tests/hard_coded/delay_partial_test_1.exp:
tests/hard_coded/delay_partial_test_1.m:
tests/hard_coded/delay_partial_test_2.exp:
tests/hard_coded/delay_partial_test_2.m:
    Rename the delay_partial_test and delay_partial_test2 test cases
    as delay_partial_test_1 and delay_partial_test_2.

tests/hard_coded/dense_lookup_switch_1.exp:
tests/hard_coded/dense_lookup_switch_1.m:
tests/hard_coded/dense_lookup_switch_2.exp:
tests/hard_coded/dense_lookup_switch_2.m:
tests/hard_coded/dense_lookup_switch_3.exp:
tests/hard_coded/dense_lookup_switch_3.m:
tests/hard_coded/dense_lookup_switch_4.exp:
tests/hard_coded/dense_lookup_switch_4.m:
    Rename the dense_lookup_switch and dense_lookup_switch[234] test cases
    as dense_lookup_switch_[1234].

tests/hard_coded/dense_lookup_switch_non_1.exp:
tests/hard_coded/dense_lookup_switch_non_1.m:
tests/hard_coded/dense_lookup_switch_non_2.exp:
tests/hard_coded/dense_lookup_switch_non_2.m:
    Rename the dense_lookup_switch_non and dense_lookup_non2 test cases
    as dense_lookup_switch_non_[12].

tests/hard_coded/direct_arg_partial_inst_1.exp:
tests/hard_coded/direct_arg_partial_inst_1.m:
tests/hard_coded/direct_arg_partial_inst_2.exp:
tests/hard_coded/direct_arg_partial_inst_2.m:
    Rename the direct_arg_partial_inst and direct_arg_partial_inst2 test cases
    as direct_arg_partial_inst_[12].

tests/hard_coded/direct_arg_tags_1.exp:
tests/hard_coded/direct_arg_tags_1.m:
    Rename the direct_arg_tags test case as direct_arg_tags_1, due to
    the existence of direct_arg_tags_2.

tests/hard_coded/export_test_1.exp:
tests/hard_coded/export_test_1.m:
tests/hard_coded/export_test_2.exp:
tests/hard_coded/export_test_2.m:
    Rename the export_test and export_test2 test cases as export_test_[12].

tests/hard_coded/follow_code_bug_1.exp:
tests/hard_coded/follow_code_bug_1.m:
    Rename the follow_code_bug test case as follow_code_bug_1, due to
    the existence of follow_code_bug_2.

tests/hard_coded/foreign_type_1.exp:
tests/hard_coded/foreign_type_1.m:
tests/hard_coded/foreign_type_2.exp:
tests/hard_coded/foreign_type_2.m:
tests/hard_coded/foreign_type_3.exp:
tests/hard_coded/foreign_type_3.m:
    Rename the foreign_type and foreign_type[23] test cases
    as foreign_type_[123].

tests/hard_coded/functor_ho_inst_1.exp:
tests/hard_coded/functor_ho_inst_1.m:
    Rename the functor_ho_inst test case as functor_ho_inst_1, due to
    the existence of functor_ho_inst_2.

tests/hard_coded/functor_ho_inst_excp_1.exp:
tests/hard_coded/functor_ho_inst_excp_1.m:
    Rename the functor_ho_inst_excp test case as functor_ho_inst_excp_1,
    due to the existence of functor_ho_inst_excp_2.

tests/hard_coded/higher_order_syntax_1.exp:
tests/hard_coded/higher_order_syntax_1.m:
tests/hard_coded/higher_order_syntax_2.exp:
tests/hard_coded/higher_order_syntax_2.m:
    Rename the higher_order_syntax and higher_order_syntax2 test cases
    as higher_order_syntax_[12].

tests/hard_coded/ho_order_1.exp:
tests/hard_coded/ho_order_1.m:
tests/hard_coded/ho_order_2.exp:
tests/hard_coded/ho_order_2.m:
    Rename the ho_order and ho_order2 test cases as ho_order_[12].

tests/hard_coded/lco_pack_args_1.exp:
tests/hard_coded/lco_pack_args_1.m:
    Rename the lco_pack_args test case as lco_pack_args_1, due to
    the existence of lco_pack_args_[23].

tests/hard_coded/loop_inv_extra_test_1.inp:
tests/hard_coded/loop_inv_extra_test_1.m:
tests/hard_coded/loop_inv_extra_test_2.inp:
tests/hard_coded/loop_inv_extra_test_2.m:
    Rename the loop_inv_test0 and loop_inv_test2 test cases as
    loop_inv_extra_test_1 and loop_inv_extra_test_2 respectively.
    Both these test cases test "extra" functionality that the compiler
    does not currently have, and thus neither is currently enabled.

tests/hard_coded/loop_inv_test_2.exp:
tests/hard_coded/loop_inv_test_2.inp:
tests/hard_coded/loop_inv_test_2.m:
    Rename the loop_inv_test test case as loop_inv_test_2,
    because loop_inv_test_1 was already taken (see below).

tests/hard_coded/loop_inv_test_1.exp:
tests/hard_coded/loop_inv_test_1.inp:
tests/hard_coded/loop_inv_test_1.m:
tests/hard_coded/loop_inv_test_3.exp:
tests/hard_coded/loop_inv_test_3.m:
tests/hard_coded/loop_inv_test_4.exp:
tests/hard_coded/loop_inv_test_4.m:
    Rename the loop_inv_test[134] test cases as loop_inv_test_[134].

tests/hard_coded/pprint_test_1.exp:
tests/hard_coded/pprint_test_1.m:
tests/hard_coded/pprint_test_2.exp:
tests/hard_coded/pprint_test_2.m:
    Rename the pprint_test and pprint_test2 test cases as pprint_test_[12].

tests/hard_coded/quantifier_1.exp:
tests/hard_coded/quantifier_1.m:
tests/hard_coded/quantifier_2.exp:
tests/hard_coded/quantifier_2.m:
    Rename the quantifier and quantifier2 test cases as quantifier_[12].

tests/hard_coded/random_1.exp:
tests/hard_coded/random_1.m:
tests/hard_coded/random_2.exp:
tests/hard_coded/random_2.m:
tests/hard_coded/random_3.exp:
tests/hard_coded/random_3.m:
    Rename the random[123] test cases as random_[123].

tests/hard_coded/random_shuffle_1.exp:
tests/hard_coded/random_shuffle_1.m:
tests/hard_coded/random_shuffle_2.exp:
tests/hard_coded/random_shuffle_2.m:
    Rename the random_shuffle[12] test cases as random_shuffle_[12].

tests/hard_coded/string_split_1.exp:
tests/hard_coded/string_split_1.m:
    Rename the string_split test case as string_split_1, due to
    the existence of string_split_2.

tests/hard_coded/string_switch_1.exp:
tests/hard_coded/string_switch_1.m:
tests/hard_coded/string_switch_2.exp:
tests/hard_coded/string_switch_2.m:
tests/hard_coded/string_switch_3.exp:
tests/hard_coded/string_switch_3.m:
tests/hard_coded/string_switch_4.exp:
tests/hard_coded/string_switch_4.m:
    Rename the string_switch and string_switch[233] test cases
    as string_switch_[1234].

tests/hard_coded/test_cord_1.exp:
tests/hard_coded/test_cord_1.m:
tests/hard_coded/test_cord_2.exp:
tests/hard_coded/test_cord_2.m:
tests/hard_coded/test_cord_3.exp:
tests/hard_coded/test_cord_3.m:
    Rename the test_cord and test_cord[23] test cases as test_cord_[123].

tests/hard_coded/trace_goal_opt.m:
tests/hard_coded/trace_goal_opt_helper_1.m:
    Rename the trace_goal_opt_2 module as trace_goal_opt_helper_1.

tests/hard_coded/tuple_test_1.exp:
tests/hard_coded/tuple_test_1.m:
tests/hard_coded/tuple_test_2.exp:
tests/hard_coded/tuple_test_2.m:
    Rename the tuple_test and tuple_test2 test cases as tuple_test_[12].

tests/hard_coded/version_hash_table_test_1.exp:
tests/hard_coded/version_hash_table_test_1.m:
tests/hard_coded/version_hash_table_test_2.exp:
tests/hard_coded/version_hash_table_test_2.m:
    Rename the version_hash_table_test and version_hash_table_test2
    test cases as version_hash_table_test_[12].

tests/hard_coded/write_reg_1.exp:
tests/hard_coded/write_reg_1.m:
tests/hard_coded/write_reg_2.exp:
tests/hard_coded/write_reg_2.m:
    Rename the write_reg[12] test cases as write_reg_[12].
2024-08-05 15:09:33 +02:00

166 lines
4.1 KiB
Mathematica

%---------------------------------------------------------------------------%
% vim: ts=4 sw=4 et ft=mercury
%---------------------------------------------------------------------------%
%
% Regression test:
%
% This test ensures that output from io.write is put on the correct
% output stream. All the functionality of io.write is tested so that
% an additional changes (such as adding a printf instead of a
% fprintf(current_stream, ...)) should be caught.
%
% The Mercury compiler of 20 Dec 1996 failed to correctly run this test.
%
% Author: trd
%
:- module write_reg_1.
:- interface.
:- import_module io.
:- pred main(io::di, io::uo) is cc_multi.
:- implementation.
:- import_module deconstruct.
:- import_module int.
:- import_module list.
:- import_module map.
:- import_module term.
:- import_module univ.
:- type enum
---> one
; two
; three.
:- type fruit
---> apple(list(int))
; banana(list(enum)).
:- type thingie
---> foo
; bar(int)
; bar(int, int)
; qux(int)
; quux(int)
; quuux(int, int)
; wombat
; zoom(int)
; zap(int, float)
; zip(int, int)
; zop(float, float).
:- type poly(A, B)
---> poly_one(A)
; poly_two(B)
; poly_three(B, A, poly(B, A)).
:- type no_tag
---> qwerty(int).
main(!IO) :-
io.stderr_stream(StdErr, !IO),
io.set_output_stream(StdErr, _StdOut, !IO),
test_discriminated(!IO),
test_polymorphism(!IO),
test_builtins(StdErr, !IO),
test_other(!IO).
:- pred test_discriminated(io::di, io::uo) is det.
test_discriminated(!IO) :-
io.write_string("TESTING DISCRIMINATED UNIONS\n", !IO),
% test enumerations
io.write_line(one, !IO),
io.write_line(two, !IO),
io.write_line(three, !IO),
% test simple tags
io.write_line(apple([9, 5, 1]), !IO),
io.write_line(banana([three, one, two]), !IO),
% test complicated tags
io.write_line(zop(3.3, 2.03), !IO),
io.write_line(zip(3, 2), !IO),
io.write_line(zap(3, -2.111), !IO),
% test complicated constant
io.write_line(wombat, !IO),
io.write_line(foo, !IO),
io.nl(!IO).
:- pred test_polymorphism(io::di, io::uo) is det.
test_polymorphism(!IO) :-
io.write_string("TESTING POLYMORPHISM\n", !IO),
io.write_line(poly_one([2399.3]) : poly(list(float), float), !IO),
io.write_line(poly_two(3) : poly(int, int), !IO),
io.write_line(poly_three(3.33, 4, poly_one(9.11)), !IO),
io.nl(!IO).
:- pred test_builtins(io.output_stream::in, io::di, io::uo) is cc_multi.
test_builtins(StdErr, !IO) :-
io.write_string("TESTING BUILTINS\n", !IO),
% test strings
io.write_line("", !IO),
io.write_line("Hello, world\n", !IO),
io.write_line("Foo%sFoo", !IO),
io.write_line("""", !IO), % interesting - prints """ of course
% test characters
io.write_line('a', !IO),
io.write_line('&', !IO),
% test floats
io.write_line(3.14159, !IO),
io.write_line(11.28324983E-22, !IO),
io.write_line(22.3954899E22, !IO),
% test integers
io.write_line(-65, !IO),
io.write_line(4, !IO),
% test univ.
type_to_univ(["hi! I'm a univ!"], Univ),
io.write_line(Univ, !IO),
% test predicates
io.write_line(newline, !IO),
io.write_line(StdErr, include_details_cc, newline, !IO),
io.nl(!IO).
% Note: testing abstract types is always going to have results
% that are dependent on the implementation. If someone changes
% the implementation, the results of this test can change.
%
:- pred test_other(io::di, io::uo) is det.
test_other(!IO) :-
io.write_string("TESTING OTHER TYPES\n", !IO),
term.init_var_supply(VarSupply),
term.create_var(Var : var, VarSupply, NewVarSupply),
io.write_line(Var, !IO),
io.write_line(VarSupply, !IO),
io.write_line(NewVarSupply, !IO),
% presently, at least, map is an equivalence and an abstract type.
map.init(Map : map(int, int)),
io.write_line(Map, !IO),
% a no tag type
io.write_line(qwerty(4), !IO),
io.nl(!IO).
:- pred newline(io::di, io::uo) is det.
newline(!IO) :-
io.write_char('\n', !IO).