Changeset 2291


Ignore:
Timestamp:
Jan 26, 2007, 1:53:54 AM (14 years ago)
Author:
roman
Message:

Lazy expansion of &N.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • devel-tools/trunk/eclipse/org.refal.plus.comp.test/src/org/refal/plus/comp/test/FormatCheckerTest.java

    r2286 r2291  
    22
    33import static org.junit.Assert.assertTrue;
     4
     5import java.util.Formatter;
    46
    57import org.junit.After;
     
    7173                expectMessage("$func F s = t;F tX = tX;", MsgCode.FormatMismatch);
    7274
     75                expectOK("$func F s = t t; F sX = sX sX;");
     76        }
     77
     78        @Test
     79        public void calls() {
     80                expectOK("$func F =; F = <F>::,;");
    7381                expectOK("$func F s = t t; $func G t t =; F sX = sX sX; G s1 s2, <G <F A>>;");
    7482        }
     
    7886                expectOK("$const A = X; $const B = &A &A; $func F =; F,&B::X X,;");
    7987                expectOK("$const A = X Y (Z); $func F =; F,&A (&A)::X Y (Z)(X Y (Z)),;");
    80                 // "$const A = X Y (Z);$const B = X Y (Z) (X Y (Z));");
    8188
    82                 // expectOK("$const A = X;$func F &A = &A;F{&A,&A;};",
    83                 // "$const A = X;$func F X = X;F{X,X;};");
     89                expectOK("$const A = X;$func F &A = &A;F{&A,&A;};");
    8490
    85                 // expectOK("$const A = X;$func F e = e;F{&A, &A::&A,&A;};",
    86                 // "$const A = X;$func F e = e;F{X,X::X,X;};");
    87                 // expectOK("$const A = X;$func F = ;F{,&A $iter &A :: &A,;};",
    88                 // "$const A = X;$func F = ;F{,X $iter X::X,;};");
    89                 // expectOK("$const A = X;$func F e = e;F{,&A : &A,&A;};",
    90                 // "$const A = X;$func F e = e;F{,X:X,X;};");
    91                 // expectOK("$const A = X;$func F e = e;F{,#&A,&A;};",
    92                 // "$const A = X;$func F e = e;F{,#X,X;};");
    93                 // expectOK("$const A = X;$func F e = e;F{,\\?\\! = $error &A;};",
    94                 // "$const A = X;$func F e = e;F{,\\?\\! = $error X;};");
    95                 // expectOK("$const A = X;$func F e = e;F{,$fail;};",
    96                 // "$const A = X;$func F e = e;F{,$fail;};");
    97                 // expectOK("$const A = X;$func F e = e;F{,$trap &A $with {&A, &A;};};",
    98                 // "$const A = X;$func F e = e;F{,$trap X $with {X,X;};};");
    99                 // expectOK("$const A = X;$func F e = e;F{,{&A;&A;};};",
    100                 // "$const A = X;$func F e = e;F{,{X;X;};};");
    101                 // expectOK("$const A = X;$func F e = e;F{,&A:{&A, &A;};};",
    102                 // "$const A = X;$func F e = e;F{,X:{X,X;};};");
     91                expectOK("$const A = X;$func F e = e;F{&A, &A::&A,&A;};");
     92                expectOK("$const A = X;$func F = ;F{,&A $iter &A :: &A,;};");
     93                expectOK("$const A = X;$func F = &A;F{,&A : &A,&A;};");
     94                expectOK("$const A = ;$func F e = ;F{,#&A,&A;};");
     95                expectOK("$const A = X;$func F e = e;F{,\\?\\! = $error &A :: X;};");
     96                expectOK("$const A = X;$func F e = e;F{,$fail;};");
     97                expectOK("$const A = X;$func F = X;F{,$trap &A $with {,&A::X, &A;};};");
     98                expectOK("$const A = X;$func F e = X;F{,{&A;&A;};};");
     99                expectOK("$const A = X;$func F e = X;F{,{&A::X, &A;}:{&A, &A::X, &A;};};");
    103100        }
    104101
     102        @Test
     103        public void explosion() {
     104                int n = 3;
     105                StringBuilder sb = new StringBuilder();
     106                Formatter f = new Formatter(sb);
     107                f.format("$const X0 = A;");
     108                for (int i = 1; i <= n; i++) {
     109                        f.format("$const X%1$d = (&X%2$d)(&X%2$d);", i, i - 1);
     110                }
     111                f.format("$const Y0 = A;");
     112                for (int i = 1; i <= n; i++) {
     113                        f.format("$const Y%1$d = (&Y%2$d)(&Y%2$d);", i, i - 1);
     114                }
     115                f.format("$func F = (&X%2$d)(&X%2$d); F = &X%1$d;", n, n - 1);
     116                f.format("$func G = &X%1$d; G = (&X%2$d)(&X%2$d);", n, n - 1);
     117                f.format("$func H = &X%1$d; H = &Y%1$d;", n);
     118                String implem = sb.toString();
     119                expectOK(implem);
     120                return;
     121        }
    105122}
Note: See TracChangeset for help on using the changeset viewer.