test for parameterization backend added

This commit is contained in:
amarjeetkapoor1 2016-07-24 03:49:17 +05:30
parent 02b3079aee
commit 4ab1b95954
13 changed files with 657 additions and 7 deletions

View file

@ -6,9 +6,7 @@
#include <utility>
#include "value.h"
#include "AST.h"
#include "memory.h"
class Annotation;
@ -32,7 +30,6 @@ public:
typedef std::vector<Assignment> AssignmentList;
virtual void add_annotations(AnnotationList *annotations);
virtual bool has_annotations() const;
virtual const Annotation * annotation(const std::string &name) const;

View file

@ -1700,11 +1700,12 @@ void MainWindow::compileTopLevelDocument()
const char* fname =
this->fileName.isEmpty() ? "" : fnameba;
this->root_module = parse(fulltext.c_str(), fs::path(fname), false);
if(this->root_module!=NULL)
if(this->root_module!=NULL){
//add parameters as annotation in AST
addParameter(fulltext.c_str(),this->root_module);
}
}
void MainWindow::checkAutoReload()

View file

@ -0,0 +1,73 @@
a = true;//parameter
//description
b = false;//parameter
//description
c = undef;//parameter
//description
d = a;//parameter
//description
e = $fn;//parameter
//description
f1 = [1,,];//parameter
//description
f2 = [1,2,3];//parameter
//description
g = f2.x + f2.y + f2.z;//parameter
//description
h1 = [2:5];//parameter
//description
h2 = [1:2:10];//parameter
//description
i = h2.begin - h2.step - h2.end;//parameter
//description
j = "test";//parameter
//description
k = 1.23e-2;//parameter
//description
l = a * b;//parameter
//description
m = a / b;//parameter
//description
n = a % b;//parameter
//description
o = c < d;//parameter
//description
p = c <= d;//parameter
//description
q = c == d;//parameter
//description
r = c != d;//parameter
//description
s = c >= d;//parameter
//description
t = c > d;//parameter
//description
u = e && g;//parameter
//description
v = e || g;//parameter
//description
w = +i;//parameter
//description
x = -i;//parameter
//description
y = !i;//parameter
//description
z = (j);//parameter
//description
aa = k ? l : m;//parameter
//description
bb = n[o];//parameter
//description
cc = let(a=1) a;//parameter
//description
dd = [for (a=[0,1]) let(b=a) if (true) b];//parameter
//description
ee = ["abc", for (a=[0,1]) let(b=a) if (true) b, true, for(c=[1:3]) c, 3];//parameter
//description
ff = [for (a=[0,1]) if (a == 0) "A" else ( "B" )];//parameter
//description
gg = [each [ "a", 0, false ]];//parameter
//description
hh = [for (a = [0 : 3]) if (a < 2) ( if (a < 1) ["+", a] ) else ["-", a] ];//parameter
//description
ii = [for (a=0,b=1;a < 5;a=a+1,b=b+2) [a,b*b] ];

View file

@ -0,0 +1,65 @@
a = abs();//parameter
//description
b = sign();//parameter
//description
c = rands();//parameter
//description
d = min();//parameter
//description
e = max();//parameter
//description
f = sin();//parameter
//description
g = cos();//parameter
//description
h = asin();//parameter
//description
i = acos();//parameter
//description
j = tan();//parameter
//description
k = atan();//parameter
//description
l = atan2();//parameter
//description
m = round();//parameter
//description
n = ceil();//parameter
//description
o = floor();//parameter
//description
p = pow();//parameter
//description
q = sqrt();//parameter
//description
r = exp();//parameter
//description
ra = len();//parameter
//description
s = log();//parameter
//description
t = ln();//parameter
//description
u = str();//parameter
//description
ua = chr();//parameter
//description
ub = concat();//parameter
//description
v = lookup();//parameter
//description
va = search();//parameter
//description
y = version();//parameter
//description
z = version_num();//parameter
//description
za = norm();//parameter
//description
zb = cross();//parameter
//description
zc = parent_module();//parameter
//description
w = dxf_dim();//parameter
//description
x = dxf_cross();

View file

@ -0,0 +1,81 @@
minkowski();//parameter
//description
glide();//parameter
//description
subdiv();//parameter
//description
hull();//parameter
//description
resize();//parameter
//description
child();//parameter
//description
echo();//parameter
//description
assign();//parameter
//description
for();//parameter
//description
intersection_for();//parameter
//description
if(false) { cube(); } else { sphere(); }//parameter
//description
union();//parameter
//description
difference();//parameter
//description
intersection();//parameter
//description
dxf_linear_extrude();//parameter
//description
linear_extrude();//parameter
//description
dxf_rotate_extrude();//parameter
//description
rotate_extrude();//parameter
//description
import();//parameter
//description
import_stl();//parameter
//description
import_off();//parameter
//description
import_dxf();//parameter
//description
group();//parameter
//description
cube();//parameter
//description
sphere();//parameter
//description
cylinder();//parameter
//description
polyhedron();//parameter
//description
square();//parameter
//description
circle();//parameter
//description
polygon();//parameter
//description
projection();//parameter
//description
render();//parameter
//description
surface();//parameter
//description
scale();//parameter
//description
rotate();//parameter
//description
mirror();//parameter
//description
translate();//parameter
//description
multmatrix();//parameter
//description
color();//parameter
//description
offset();//parameter
//description
text();

View file

@ -0,0 +1,48 @@
//alone Description at Top
//normal description
x=50;
// normal starting width spaces description
x2=45;
// normal starting tab spaces description
x3=3;
// normal comment starting with space before //
x4=3;
// normal comment starting with tab before //
x5=3;
// double description
x5=3;
//
x6=12;
x7=12;
// comment
x8=12;
// description sandwiched between two assignments
x9=23;
x8=12;
// comment sandwiched between two assignments
x9=23;
x10=23;
x11=23;
x12=23;
// normal comment starting with tab before //
x13=3;
// double description
x13=7;
// double description // normal comment starting with tab before //
x14=3;

51
testdata/scad/customizer/parameter.scad vendored Normal file
View file

@ -0,0 +1,51 @@
x=1;
x1=1; //12
x2=1; //12
x3=1; // 12
x4=1; // 12
x5=1; //[1:12]
x6=1; //[1:2:12]
x7=1; //[1:12
x8=1; //[1 12]
x9=1; //[1:12] //[12:34]
x10=1; //
x11=1; //
x12=1; //[12]
x13=10; // [10:Small, 20:Medium, 30:Large]
x14=10; //[10:100, 20:101, 30:102]
x15=10; //parameter
x16=10; //[0, 1, 2, 3]
x17="text"; // parameter
x18="text"; //[foo, bar, baz]
x19="text"; //[0:text, 1:foo, 2:bar, 3:hello]
x20="text"; //[foo:10, bar:10, baz:30]
x21="text"; //[foo:yes, bar:no, baz:mgiht]
x22=[12,34]; //[23,4]
x23=[12,34]; //[23,4,23,4,45]
x24=[12,34,2,3,41,23]; //[23,4,2,3,4,6]
x25=12; x26="text"; //[1:34]
x27=12; //end parameter

View file

@ -742,7 +742,9 @@ set(CORE_SOURCES
../src/libsvg/svgpage.cc
../src/libsvg/transformation.cc
../src/libsvg/util.cc
../src/clipper-utils.cc
../src/clipper-utils.cc
../src/assignment.cc
../src/annotation.cc
../src/polyclipping/clipper.cpp
../src/${PLATFORMUTILS_SOURCE}
${FLEX_OpenSCADlexer_OUTPUTS}
@ -1601,6 +1603,18 @@ add_failing_test(offfailedtest EXE ${PYTHON_EXECUTABLE} SCRIPT ${CMAKE_SOURCE_DI
# Add experimental tests
#
#
# Customizer tests
#
add_cmdline_test(customizertest EXE ${OPENSCAD_BINPATH} ARGS -o SUFFIX ast FILES
${CMAKE_SOURCE_DIR}/../testdata/scad/customizer/description.scad
${CMAKE_SOURCE_DIR}/../testdata/scad/customizer/parameter.scad
${CMAKE_SOURCE_DIR}/../testdata/scad/customizer/allmodulescomment.scad
${CMAKE_SOURCE_DIR}/../testdata/scad/customizer/allfunctionscomment.scad
${CMAKE_SOURCE_DIR}/../testdata/scad/customizer/allexpressionscomment.scad
)
# Tests using the actual OpenSCAD binary
# non-ASCII filenames

View file

@ -0,0 +1,110 @@
@Parameter("parameter")
a = true;
@Description("description")
@Parameter("parameter")
b = false;
@Description("description")
@Parameter("parameter")
c = undef;
@Description("description")
@Parameter("parameter")
d = a;
@Description("description")
@Parameter("parameter")
e = $fn;
@Description("description")
@Parameter("parameter")
f1 = [1];
@Description("description")
@Parameter("parameter")
f2 = [1, 2, 3];
@Description("description")
@Parameter("parameter")
g = ((f2.x + f2.y) + f2.z);
@Description("description")
@Parameter("parameter")
h1 = [2 : 5];
@Description("description")
@Parameter("parameter")
h2 = [1 : 2 : 10];
@Description("description")
@Parameter("parameter")
i = ((h2.begin - h2.step) - h2.end);
@Description("description")
@Parameter("parameter")
j = "test";
@Description("description")
@Parameter("parameter")
k = 0.0123;
@Description("description")
@Parameter("parameter")
l = (a * b);
@Description("description")
@Parameter("parameter")
m = (a / b);
@Description("description")
@Parameter("parameter")
n = (a % b);
@Description("description")
@Parameter("parameter")
o = (c < d);
@Description("description")
@Parameter("parameter")
p = (c <= d);
@Description("description")
@Parameter("parameter")
q = (c == d);
@Description("description")
@Parameter("parameter")
r = (c != d);
@Description("description")
@Parameter("parameter")
s = (c >= d);
@Description("description")
@Parameter("parameter")
t = (c > d);
@Description("description")
@Parameter("parameter")
u = (e && g);
@Description("description")
@Parameter("parameter")
v = (e || g);
@Description("description")
@Parameter("parameter")
w = i;
@Description("description")
@Parameter("parameter")
x = -i;
@Description("description")
@Parameter("parameter")
y = !i;
@Description("description")
@Parameter("parameter")
z = j;
@Description("description")
@Parameter("parameter")
aa = (k ? l : m);
@Description("description")
@Parameter("parameter")
bb = n[o];
@Description("description")
@Parameter("parameter")
cc = let(a = 1) a;
@Description("description")
@Parameter("parameter")
dd = [for(a = [0, 1]) (let(b = a) (if(true) (b)))];
@Description("description")
@Parameter("parameter")
ee = ["abc", for(a = [0, 1]) (let(b = a) (if(true) (b))), true, for(c = [1 : 3]) (c), 3];
@Description("description")
@Parameter("parameter")
ff = [for(a = [0, 1]) (if((a == 0)) ("A") else ("B"))];
@Description("description")
@Parameter("parameter")
gg = [each (["a", 0, false])];
@Description("description")
@Parameter("parameter")
hh = [for(a = [0 : 3]) (if((a < 2)) (if((a < 1)) (["+", a])) else (["-", a]))];
@Description("description")
ii = [for(a = 0, b = 1;(a < 5);a = (a + 1), b = (b + 2)) [a, (b * b)]];

View file

@ -0,0 +1,98 @@
@Parameter("parameter")
a = abs();
@Description("description")
@Parameter("parameter")
b = sign();
@Description("description")
@Parameter("parameter")
c = rands();
@Description("description")
@Parameter("parameter")
d = min();
@Description("description")
@Parameter("parameter")
e = max();
@Description("description")
@Parameter("parameter")
f = sin();
@Description("description")
@Parameter("parameter")
g = cos();
@Description("description")
@Parameter("parameter")
h = asin();
@Description("description")
@Parameter("parameter")
i = acos();
@Description("description")
@Parameter("parameter")
j = tan();
@Description("description")
@Parameter("parameter")
k = atan();
@Description("description")
@Parameter("parameter")
l = atan2();
@Description("description")
@Parameter("parameter")
m = round();
@Description("description")
@Parameter("parameter")
n = ceil();
@Description("description")
@Parameter("parameter")
o = floor();
@Description("description")
@Parameter("parameter")
p = pow();
@Description("description")
@Parameter("parameter")
q = sqrt();
@Description("description")
@Parameter("parameter")
r = exp();
@Description("description")
@Parameter("parameter")
ra = len();
@Description("description")
@Parameter("parameter")
s = log();
@Description("description")
@Parameter("parameter")
t = ln();
@Description("description")
@Parameter("parameter")
u = str();
@Description("description")
@Parameter("parameter")
ua = chr();
@Description("description")
@Parameter("parameter")
ub = concat();
@Description("description")
@Parameter("parameter")
v = lookup();
@Description("description")
@Parameter("parameter")
va = search();
@Description("description")
@Parameter("parameter")
y = version();
@Description("description")
@Parameter("parameter")
z = version_num();
@Description("description")
@Parameter("parameter")
za = norm();
@Description("description")
@Parameter("parameter")
zb = cross();
@Description("description")
@Parameter("parameter")
zc = parent_module();
@Description("description")
@Parameter("parameter")
w = dxf_dim();
@Description("description")
x = dxf_cross();

View file

@ -0,0 +1,43 @@
minkowski();
glide();
subdiv();
hull();
resize();
child();
echo();
assign();
for();
intersection_for();
if(false) cube();
else sphere();
union();
difference();
intersection();
dxf_linear_extrude();
linear_extrude();
dxf_rotate_extrude();
rotate_extrude();
import();
import_stl();
import_off();
import_dxf();
group();
cube();
sphere();
cylinder();
polyhedron();
square();
circle();
polygon();
projection();
render();
surface();
scale();
rotate();
mirror();
translate();
multmatrix();
color();
offset();
text();

View file

@ -0,0 +1,20 @@
@Description("normal description")
x = 50;
@Description("normal starting width spaces description")
x2 = 45;
@Description("normal starting tab spaces description")
x3 = 3;
x4 = 3;
x5 = 3;
x6 = 12;
x7 = 12;
x8 = 12;
@Description("description sandwiched between two assignments")
x9 = 23;
x10 = 23;
x11 = 23;
x12 = 23;
x13 = 7;
@Description("double description normal comment starting with tab before ")
x14 = 3;

View file

@ -0,0 +1,49 @@
x = 1;
@Parameter(12)
x1 = 1;
@Parameter(12)
x2 = 1;
@Parameter(12)
x3 = 1;
@Parameter(12)
x4 = 1;
@Parameter([1 : 12])
x5 = 1;
@Parameter([1 : 2 : 12])
x6 = 1;
x7 = 1;
x8 = 1;
x9 = 1;
x10 = 1;
x11 = 1;
@Parameter([12])
x12 = 1;
@Parameter([[10, "Small"], [20, "Medium"], [30, "Large"]])
x13 = 10;
@Parameter([[10, 100], [20, 101], [30, 102]])
x14 = 10;
@Parameter("parameter")
x15 = 10;
@Parameter([0, 1, 2, 3])
x16 = 10;
@Parameter("parameter")
x17 = "text";
@Parameter(["foo", "bar", "baz"])
x18 = "text";
@Parameter([[0, "text"], [1, "foo"], [2, "bar"], [3, "hello"]])
x19 = "text";
@Parameter([["foo", 10], ["bar", 10], ["baz", 30]])
x20 = "text";
@Parameter([["foo", "yes"], ["bar", "no"], ["baz", "mgiht"]])
x21 = "text";
@Parameter([23, 4])
x22 = [12, 34];
@Parameter([23, 4, 23, 4, 45])
x23 = [12, 34];
@Parameter([23, 4, 2, 3, 4, 6])
x24 = [12, 34, 2, 3, 41, 23];
x25 = 12;
x26 = "text";
@Parameter("end parameter")
x27 = 12;