1/* Test mpz_set_str. 2 3Copyright 2001 Free Software Foundation, Inc. 4 5This file is part of the GNU MP Library. 6 7The GNU MP Library is free software; you can redistribute it and/or modify 8it under the terms of the GNU Lesser General Public License as published by 9the Free Software Foundation; either version 3 of the License, or (at your 10option) any later version. 11 12The GNU MP Library is distributed in the hope that it will be useful, but 13WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 14or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 15License for more details. 16 17You should have received a copy of the GNU Lesser General Public License 18along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */ 19 20#include <stdio.h> 21#include <stdlib.h> 22#include "gmp.h" 23#include "gmp-impl.h" 24#include "tests.h" 25 26 27void 28check_one (mpz_srcptr want, int base, const char *str) 29{ 30 mpz_t got; 31 32 MPZ_CHECK_FORMAT (want); 33 mp_trace_base = (base == 0 ? 16 : base); 34 35 mpz_init (got); 36 37 if (mpz_set_str (got, str, base) != 0) 38 { 39 printf ("mpz_set_str unexpectedly failed\n"); 40 printf (" base %d\n", base); 41 printf (" str \"%s\"\n", str); 42 abort (); 43 } 44 MPZ_CHECK_FORMAT (got); 45 46 if (mpz_cmp (got, want) != 0) 47 { 48 printf ("mpz_set_str wrong\n"); 49 printf (" base %d\n", base); 50 printf (" str \"%s\"\n", str); 51 mpz_trace ("got ", got); 52 mpz_trace ("want", want); 53 abort (); 54 } 55 56 mpz_clear (got); 57} 58 59void 60check_samples (void) 61{ 62 mpz_t z; 63 64 mpz_init (z); 65 66 mpz_set_ui (z, 0L); 67 check_one (z, 0, "0 "); 68 check_one (z, 0, "0 "); 69 check_one (z, 10, "0 "); 70 check_one (z, 10, "0 "); 71 check_one (z, 10, "0000000 "); 72 73 mpz_set_ui (z, 123L); 74 check_one (z, 0, "123 "); 75 check_one (z, 0, "123 "); 76 check_one (z, 10, "123 "); 77 check_one (z, 10, "123 "); 78 check_one (z, 0, " 123 "); 79 check_one (z, 0, " 123 "); 80 check_one (z, 10, " 0000123 "); 81 check_one (z, 10, " 123 "); 82 83 mpz_clear (z); 84} 85 86int 87main (void) 88{ 89 tests_start (); 90 91 check_samples (); 92 93 tests_end (); 94 exit (0); 95} 96