[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     ! 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>