diff options
| -rw-r--r-- | mixlib/testsuite/.arch-inventory | 6 | ||||
| -rw-r--r-- | mixlib/testsuite/Makefile.am | 6 | ||||
| -rw-r--r-- | mixlib/testsuite/mix_parser_t.c | 98 | ||||
| -rw-r--r-- | samples/isamixinstruction.mixal | 4 | 
4 files changed, 70 insertions, 44 deletions
| diff --git a/mixlib/testsuite/.arch-inventory b/mixlib/testsuite/.arch-inventory index f2cfaf7..2703642 100644 --- a/mixlib/testsuite/.arch-inventory +++ b/mixlib/testsuite/.arch-inventory @@ -1,2 +1,8 @@ +junk ^(mixtypest)$ +junk ^(mixparsertest)$ +junk ^(mixinstest)$ +junk ^(mixevaltest)$ +junk ^(mixdevtest)$ +junk ^(mixvminstest)$  precious ^(Makefile)$  precious ^(Makefile\.in)$ diff --git a/mixlib/testsuite/Makefile.am b/mixlib/testsuite/Makefile.am index 330a3e1..e297988 100644 --- a/mixlib/testsuite/Makefile.am +++ b/mixlib/testsuite/Makefile.am @@ -17,12 +17,16 @@ LDADD = $(top_builddir)/mixlib/libmix.a  check_PROGRAMS = mixtypest mixinstest mixvminstest mixparsertest mixdevtest mixevaltest  TESTS = $(check_PROGRAMS) +MIXAL_FILES= "\"primes\",\"isamixinstruction\",\"tests/bt\",\"tests/cbp\",\"tests/ldan\",\"tests/stress0\",\"hello\",\"echo\"," + +AM_CFLAGS = -DMIX_TEST_MIXAL_FILES=$(MIXAL_FILES) -DMIX_TEST_SAMPLES_DIR="\"$(top_srcdir)/samples\"" +  mixtypest_SOURCES = test.h mix_types_t.c  mixinstest_SOURCES = test.h mix_ins_t.c  mixvminstest_SOURCES = test.h mix_vm_ins_t.c -mixparsertest_SOURCES = test.h mix_parser_t.c  mixdevtest_SOURCES = test.h mix_device_t.c  mixevaltest_SOURCES = test.h mix_eval_t.c +mixparsertest_SOURCES = test.h mix_parser_t.c diff --git a/mixlib/testsuite/mix_parser_t.c b/mixlib/testsuite/mix_parser_t.c index 215fc70..4008309 100644 --- a/mixlib/testsuite/mix_parser_t.c +++ b/mixlib/testsuite/mix_parser_t.c @@ -1,22 +1,22 @@  /* -*-c-*- -------------- mix_parser_t.c :   * Test of mix_parser_t   * ------------------------------------------------------------------ - * Copyright (C) 2000 Free Software Foundation, Inc. - *   + * Copyright (C) 2000, 2006 Free Software Foundation, Inc. + *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by   * the Free Software Foundation; either version 2 of the License, or   * (at your option) any later version. - *   + *   * This program is distributed in the hope that it will be useful,   * but WITHOUT ANY WARRANTY; without even the implied warranty of   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   * GNU General Public License for more details. - *   + *   * You should have received a copy of the GNU General Public License   * along with this program; if not, write to the Free Software   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - *   + *   */ @@ -28,57 +28,73 @@  /* #define VERBOSE_TEST */  #include "test.h" -static const gchar * const FILES_[] = { "test1" , "taocp145" -}; +static const gchar * const FILES_[] = {MIX_TEST_MIXAL_FILES};  static const size_t FILE_NO_ = sizeof(FILES_)/sizeof(FILES_[0]); +  static void -test_code_(const gchar *name) +test_code_ (const gchar *name)  { -  mix_parser_t *parser = mix_parser_new(name); -  mix_parser_err_t err; +    mix_code_file_t *code; +  mix_parser_err_t err; + +  gchar *real_name = g_strdup_printf ("%s/%s", MIX_TEST_SAMPLES_DIR, name); +  g_print (real_name); +  g_print ("\n"); + +  mix_parser_t *parser = mix_parser_new (real_name); + +  g_assert (parser); + +  err = mix_parser_compile (parser); + +  if (err != MIX_PERR_OK) +    { +      g_print (mix_parser_err_string (err)); +      g_print ("\n"); +    } + +  g_assert (err == MIX_PERR_OK); + +  err = mix_parser_write_code (parser, real_name, FALSE); +  code = mix_code_file_new_read (real_name); +  g_assert (code); + +#ifdef VERBOSE_TEST +  g_message ("%s: Version: %d.%d", name, mix_code_file_major_version (code), +             mix_code_file_minor_version (code)); + +  mix_short_print (mix_code_file_get_start_addr (code), "Start address: "); +  g_print ("\n"); +    mix_ins_desc_t ins; -   -  g_assert(parser); -  err =  mix_parser_compile(parser); -  if ( err != MIX_PERR_OK ) { -    g_print(mix_parser_err_string(err)); -    g_print("\n"); -  }    -  g_assert(err == MIX_PERR_OK); -  err = mix_parser_write_code(parser, name, FALSE); -  code = mix_code_file_new_read(name); -  g_assert(code); -  g_message("%s: Version: %d.%d", name, mix_code_file_major_version(code), -	    mix_code_file_minor_version(code)); -  mix_short_print(mix_code_file_get_start_addr(code), "Start address: "); -  g_print("\n"); -  while ( mix_code_file_get_ins(code, &ins) ) { -    mix_ins_t i; -    mix_word_to_ins_uncheck(ins.ins, i); -    mix_short_print(ins.address, "addr: "); -    g_print(" : "); -    mix_ins_print(&i); -    g_print("\n"); -  } -   -  mix_parser_delete(parser); -  mix_code_file_delete(code); +  while (mix_code_file_get_ins (code, &ins)) +    { +      mix_ins_t i; +      mix_word_to_ins_uncheck (ins.ins, i); +      mix_short_print (ins.address, "addr: "); +      g_print (" : "); +      mix_ins_print (&i); +      g_print ("\n"); +    } +#endif + +  mix_parser_delete (parser); +  mix_code_file_delete (code); +  g_free (real_name);  } -int  +int  main(int argc, char **argv)  {    size_t k; -   +    INIT_TEST;    for (k = 0; k < FILE_NO_; ++k) -    // test_code_(FILES_[k]); -    ; -     +    test_code_(FILES_[k]);    return EXIT_SUCCESS;  } diff --git a/samples/isamixinstruction.mixal b/samples/isamixinstruction.mixal index 0815fab..b1d7f2d 100644 --- a/samples/isamixinstruction.mixal +++ b/samples/isamixinstruction.mixal @@ -1,5 +1,5 @@ -B      EQU  1(4:4) -BMAX   EQU  B-1 +BB     EQU  1(4:4) +BMAX   EQU  BB-1  UMAX   EQU  20  TABLE  NOP  GOOD(BMAX)         ADD  FLOAT(5:5) | 
