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>