]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/libmp/test.c
?a: getc() needs to increment lineno if it gets \n from peekc
[plan9front.git] / sys / src / libmp / test.c
old mode 100755 (executable)
new mode 100644 (file)
index dbde415..47033a5
@@ -5,59 +5,46 @@
 
 int loops = 1;
 
-long randomreg;
-
-void
-srand(long seed)
-{
-       randomreg = seed;
-}
-
-long
-lrand(void)
-{
-       randomreg = randomreg*104381 + 81761;
-       return randomreg;
-}
-
 void
 prng(uchar *p, int n)
 {
        while(n-- > 0)
-               *p++ = lrand();
+               *p++ = rand();
 }
 
 void
 testconv(char *str)
 {
+       int i, base[] = {2,8,10,16,32,64};
        mpint *b;
        char *p;
 
+       print("testconv \"%s\":\n", str);
        b = strtomp(str, nil, 16, nil);
 
-       p = mptoa(b, 10, nil, 0);
-       print("%s = ", p);
-       strtomp(p, nil, 10, b);
-       free(p);
-       print("%B\n", b);
-
-       p = mptoa(b, 16, nil, 0);
-       print("%s = ", p);
-       strtomp(p, nil, 16, b);
-       free(p);
-       print("%B\n", b);
-
-       p = mptoa(b, 32, nil, 0);
-       print("%s = ", p);
-       strtomp(p, nil, 32, b);
-       free(p);
-       print("%B\n", b);
-
-       p = mptoa(b, 64, nil, 0);
-       print("%s = ", p);
-       strtomp(p, nil, 64, b);
-       free(p);
-       print("%B\n", b);
+       for(i=0; i<nelem(base); i++){
+               p = mptoa(b, base[i], nil, 0);
+               print("base%d: %s = ", base[i], p);
+               if(strtomp(p, nil, base[i], b) == nil)
+                       abort();
+               free(p);
+               print("%B\n", b, base[i], b);
+
+               switch(base[i]){
+               case 2:
+               case 8:
+               case 10:
+               case 16:
+                       p = smprint("%#.*B", base[i], b);
+                       print("# %s = ", p);
+                       if(strtomp(p, nil, 0, b) == nil)
+                               abort();
+                       free(p);
+                       print("%#.*B\n", base[i], b);
+                       break;
+               }
+
+       }
 
        mpfree(b);
 }
@@ -400,8 +387,8 @@ main(int argc, char **argv)
                break;
        }ARGEND;
 
-       fmtinstall('B', mpconv);
-       fmtinstall('Q', mpconv);
+       fmtinstall('B', mpfmt);
+       fmtinstall('Q', mpfmt);
        srand(0);
        mpsetminbits(2*Dbits);
        testshift("1111111111111111");
@@ -419,6 +406,11 @@ main(int argc, char **argv)
        testconv("0");
        testconv("-abc0123456789abcedf");
        testconv("abc0123456789abcedf");
+       testconv("ffffffff");
+       testconv("aaaaaaaaaaaaaaaaa");
+       testconv("1111111111111111");
+       testconv("33333333333333333333333333333333");
+
        testvecdigmulsub("fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 2);
        testsub1("1FFFFFFFE00000000", "FFFFFFFE00000001");
        testmul1("ffffffff", "f");