    /*Basic test file
    Written by Julian Stirling, 2018
    License: MIT*/

    // This is a comment
    x=5;
    y=6;
    z=5;
    r=2;
    for (n = [-1.5:1:1.5]){
        translate([n*x,0,0]){cubehole([x,y,z],r);}
    }

    module cubehole(size,holerad)
    {
        $fn=28;
        difference()
        {
            cube(size,center=true);
            cylinder(size[2]+1,r=holerad,center=true);
        }
    }

    // some examples adapted from https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/General
    cube(5);
    x = 4 + y;
    rotate(40) square(5,10);
    translate([10, 5]) {
        circle(5);
        square(4);
    }
    rotate(60) color("red") {
        circle(5);
        square(4);
    }
    color("blue") {
        translate([5, 3, 0]) sphere(5);
        rotate([45, 0, 45]) {
            cylinder(10);
            cube([5, 6, 7]);
        }
    }

    aNumber = 42;
    aBoolean = true;
    anotherBoolean = false;
    aString = "foo";
    aRange = [0: 1: 10];
    aVector = [1, 2, 3];
    aUndef = undef;
    moreNumbers = [-1, 42, 0.5, 2.99792458e+8, 1.337e3, 314e-2];
    echo(moreNumbers)
    echo("The quick brown fox \tjumps \"over\" the lazy dog.\rThe quick brown fox.\nThe \\lazy\\ dog. \x21 \u03a9 \U01F98A \U01f43e");

    vector1 = [1,2,3]; vector2 = [4]; vector3 = [5,6];
    new_vector = concat(vector1, vector2, vector3); // [1,2,3,4,5,6]

    string_vector = concat("abc","def");                 // ["abc", "def"]
    one_string = str(string_vector[0],string_vector[1]); // "abcdef"

    a = [1,2,3]; echo(len(a));   //  3

    // Example which defines a 2D rotation matrix
    mr = [
        [cos(angle), -sin(angle)],
        [sin(angle),  cos(angle)]
    ];

    // modifiers
    % cube([10, 10, 10]);  // background
    # cube([10, 10, 10]);  // debug
    ! cube([10, 10, 10]);  // root
    * cube([10, 10, 10]);  // disable

    // if example taken from https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Other_Language_Features#Rounding_examples
    if(a==b){
        echo ("a==b");
    }else if(a>b){
        echo ("a>b");
    }else if(a<b){
        echo ("a<b");
    }else{
        echo ("???");
    }

    // assert example taken from https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Other_Language_Features#assert
    module row(cnt = 3){
        // Count has to be a positive integer greater 0
        assert(cnt > 0);
        for (i = [1 : cnt]) {
            translate([i * 2, 0, 0]) sphere();
        }
    }
    row(0);