package is.L42.connected.withSafeOperators;
import static helpers.TestHelper.getClassB;
import static org.junit.Assert.*;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameter;
import ast.Ast.Path;
import ast.ExpCore.ClassB;
import helpers.TestHelper;
public class ExtractInfoTest {
@RunWith(Parameterized.class)
public static class TestUsageCount {
@Parameter(0) public String _classInput;
@Parameter(1) public String _path;
@Parameter(2) public Integer count;
@Parameterized.Parameters
public static List<Object[]> createData() {
return Arrays.asList(new Object[][] {
{"{}","B",0
},{"{()}","B",0
},{"{}","This0",0
},{"{()}","This0",1//for desugaring of ()
},{"{B:{(This0 a)}}","This0",0
},{"{B:{(This1 a)}}","This0",1//ctx, getter, exposer
},{"{B:{(This0 a)}}","This0.B",1//ctx*2, getter,exposer
},{"{B:{(This0 a, This1.B b)}}","This0.B",1//ctx*3, getter*2,exposer*2
}});}
@Test public void test() {
ClassB classInput=getClassB(_classInput);
Path path=Path.sugarParse(_path);
if(!path.isCore()){
path=Path.outer(0,path.sugarNames());//normalize, put This0 on top.
}
ExtractInfo.IsUsed iu=new ExtractInfo.IsUsed(path);
classInput.accept(iu);
assertEquals(iu.whereUsed.size(),(int)count);//cast to avoid overloading ambiguity :(
}
}
}