[BACK]Return to io-binary.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gmp / mpz / tests

Annotation of OpenXM_contrib/gmp/mpz/tests/io-binary.c, Revision 1.1.1.1

1.1       maekawa     1: /* Test mpz_inp_binary and mpz_out_binary.
                      2:
                      3:    We write and read back some test strings, and both compare
                      4:    the numerical result, and make sure the pattern on file is
                      5:    what we expect.  The latter is important for compatibility
                      6:    between machines with different word sizes.  */
                      7:
                      8: #include <stdio.h>
                      9: #include "gmp.h"
                     10:
                     11: FILE *file;
                     12:
                     13: test (str, binary_len, binary_str)
                     14:      char *str;
                     15:      int binary_len;
                     16:      char *binary_str;
                     17: {
                     18:   mpz_t x, y;
                     19:   int n_written;
                     20:   char buf[100];
                     21:
                     22:   mpz_init_set_str (x, str, 0);
                     23:   mpz_init (y);
                     24:
                     25:   fseek (file, 0, SEEK_SET);
                     26:   mpz_out_binary (file, x);
                     27:   n_written = ftell (file);
                     28:   if (n_written != binary_len)
                     29:     abort ();
                     30:
                     31:   fseek (file, 0, SEEK_SET);
                     32:   mpz_inp_binary (y, file);
                     33:   if (n_written != ftell (file))
                     34:     abort ();
                     35:   if (mpz_cmp (x, y) != 0)
                     36:     abort ();
                     37:
                     38:   fseek (file, 0, SEEK_SET);
                     39:   fread (buf, n_written, 1, file);
                     40:   if (memcmp (buf, binary_str, binary_len) != 0)
                     41:     abort ();
                     42:
                     43:   mpz_clear (x);
                     44: }
                     45:
                     46: main ()
                     47: {
                     48:   file = fopen ("xtmpfile", "w+");
                     49:
                     50:   test ("0", 4,
                     51:        "\000\000\000\000");
                     52:
                     53:   test ("1", 5,
                     54:        "\000\000\000\001\001");
                     55:   test ("0x123", 6,
                     56:        "\000\000\000\002\001\043");
                     57:   test ("0xdeadbeef", 8,
                     58:        "\000\000\000\004\336\255\276\357");
                     59:   test ("0xbabefaced", 9,
                     60:        "\000\000\000\005\013\253\357\254\355");
                     61:   test ("0x123456789facade0", 12,
                     62:        "\000\000\000\010\022\064\126\170\237\254\255\340");
                     63:
                     64:   test ("-1", 5,
                     65:        "\377\377\377\377\001");
                     66:   test ("-0x123", 6,
                     67:        "\377\377\377\376\001\043");
                     68:   test ("-0xdeadbeef", 8,
                     69:        "\377\377\377\374\336\255\276\357");
                     70:   test ("-0xbabefaced", 9,
                     71:        "\377\377\377\373\013\253\357\254\355");
                     72:   test ("-0x123456789facade0", 12,
                     73:        "\377\377\377\370\022\064\126\170\237\254\255\340");
                     74:
                     75:   exit (0);
                     76: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>