瀏覽代碼

Set attributes and create inheri relations.

Bentley James Oakes 7 年之前
父節點
當前提交
09a330ea06
共有 1 個文件被更改,包括 147 次插入17 次删除
  1. 147 17
      tests/05_creating_dsl.js

+ 147 - 17
tests/05_creating_dsl.js

@@ -1,7 +1,76 @@
-
 let test_utils = require('./test_utils');
 let user = "./users/testuser/";
 
+function get_all_attrs() {
+    return "[\n" +
+        "   {\n" +
+        "      \"name\": \"int\",\n" +
+        "      \"type\": \"int\",\n" +
+        "      \"default\": 0\n" +
+        "   },\n" +
+        "   {\n" +
+        "      \"name\": \"string\",\n" +
+        "      \"type\": \"string\",\n" +
+        "      \"default\": \"hello\"\n" +
+        "   },\n" +
+        "   {\n" +
+        "      \"name\": \"float\",\n" +
+        "      \"type\": \"float\",\n" +
+        "      \"default\": 0\n" +
+        "   },\n" +
+        "   {\n" +
+        "      \"name\": \"boolean\",\n" +
+        "      \"type\": \"boolean\",\n" +
+        "      \"default\": true\n" +
+        "   },\n" +
+        "   {\n" +
+        "      \"name\": \"code\",\n" +
+        "      \"type\": \"code\",\n" +
+        "      \"default\": \"\"\n" +
+        "   },\n" +
+        "   {\n" +
+        "      \"name\": \"file_html\",\n" +
+        "      \"type\": \"file<*.html>\",\n" +
+        "      \"default\": \"\"\n" +
+        "   },\n" +
+        "   {\n" +
+        "      \"name\": \"map_int_string\",\n" +
+        "      \"type\": \"map<int,string>\"\n" +
+        "   },\n" +
+        "   {\n" +
+        "      \"name\": \"list_int\",\n" +
+        "      \"type\": \"lis<int>\",\n" +
+        "      \"default\": [\n" +
+        "         1,\n" +
+        "         2\n" +
+        "      ]\n" +
+        "   },\n" +
+        "   {\n" +
+        "      \"name\": \"enum\",\n" +
+        "      \"type\": \"ENUM(Red,Green,Blue)\"\n" +
+        "   },\n" +
+        "   {\n" +
+        "      \"name\": \"enum2\",\n" +
+        "      \"type\": \"ENUM(Four,Five,Six,Seven)\"\n" +
+        "   }\n" +
+        "]";
+}
+
+function get_all_attrs2() {
+    return "[\n" +
+        "   {\n" +
+        "      \"name\": \"name\",\n" +
+        "      \"type\": \"string\",\n" +
+        "      \"default\": \"test\"\n" +
+        "   },\n" +
+        "   {\n" +
+        "      \"name\": \"\",\n" +
+        "      \"type\": \"\",\n" +
+        "      \"default\": \"\"\n" +
+        "   }\n" +
+        "]";
+}
+
 module.exports = {
 
     beforeEach: function (client) {
@@ -21,10 +90,11 @@ module.exports = {
         client.waitForElementPresent(classIcon, 2000, "Check for class icon...");
         client.click(classIcon);
 
-        console.log("Moving");
         let canvas = "#div_canvas";
         client.waitForElementPresent(canvas, 1000, "Checking for canvas...");
 
+
+        //BUILD CLASSES
         let start_x = 50;
         let x_diff = 350;
         let x_coords = [start_x, start_x + x_diff, start_x + 2 * x_diff];
@@ -33,19 +103,21 @@ module.exports = {
         let y_diff = 150;
         let y_coords = [start_y, start_y + y_diff, start_y + 2 * y_diff];
 
-        for (let x of x_coords){
-            for (let y of y_coords){
+        for (let x of x_coords) {
+            for (let y of y_coords) {
                 client
-                .moveToElement(canvas, x, y)
-                .mouseButtonClick('right')
-                .pause(500);
+                    .moveToElement(canvas, x, y)
+                    .mouseButtonClick('right')
+                    .pause(500);
             }
         }
 
+        //SET NAMES FOR CLASSES
+        let num_classes = 9;
         let name_field = "#tr_name > td:nth-child(2) > textarea";
-        for (let i = 0; i < 9; i++){
+        for (let i = 0; i < num_classes; i++) {
             let class_name = "Class" + String.fromCharCode(65 + i);
-            let class_div = "#div_canvas > svg > g:nth-child(" + (3 + i) +")";
+            let class_div = "#div_canvas > svg > g:nth-child(" + (3 + i) + ")";
 
             client.waitForElementPresent(class_div, 1000, "Looking for class");
 
@@ -59,17 +131,75 @@ module.exports = {
                 .moveToElement(canvas, 0, 100)
                 .mouseButtonClick('left')
                 .pause(1000)
-                ;
+            ;
+        }
+
+        //SET ATTRIBUTES
+        let class_div = "#div_canvas > svg > g:nth-child(" + (3) + ")";
+        let attrib_field = "#tr_attributes > td:nth-child(2) > textarea";
+
+        client.moveToElement(class_div, 10, 10)
+            .mouseButtonClick('middle')
+            .waitForElementPresent("#dialog_btn", 1000, "Editing menu opens")
+            .clearValue(attrib_field)
+            .setValue(attrib_field, get_all_attrs())
+            .click("#dialog_btn")
+            .waitForElementNotPresent("#dialog_btn", 1000, "Editing menu closes")
+            .moveToElement(canvas, 0, 100)
+            .mouseButtonClick('left')
+            .pause(1000)
+        ;
+
+
+        let abstract_class = 4;
+        let class_div2 = "#div_canvas > svg > g:nth-child(" + (abstract_class) + ")";
+        let attrib_field2 = "#tr_attributes > td:nth-child(2) > textarea";
+        let checkbox = "#tr_abstract > td:nth-child(2) > input[type=\"checkbox\"]";
+        client.moveToElement(class_div2, 10, 10)
+            .mouseButtonClick('middle')
+            .waitForElementPresent("#dialog_btn", 1000, "Editing menu opens")
+            .clearValue(attrib_field2)
+            .setValue(attrib_field2, get_all_attrs2())
+            .moveToElement(checkbox, 0, 0)
+            .mouseButtonClick('left')
+            .click("#dialog_btn")
+            .waitForElementNotPresent("#dialog_btn", 1000, "Editing menu closes")
+            .moveToElement(canvas, 0, 100)
+            .mouseButtonClick('left')
+            .pause(1000)
+        ;
+
+        //CREATE INHERITANCE
+        let inheri_classes = [
+            [abstract_class, abstract_class + 1],
+            [abstract_class, abstract_class + 3]];
+
+        for (let inheri_set of inheri_classes) {
+            let sup = "#div_canvas > svg > g:nth-child(" + (inheri_set[0]) + ")";
+            let sub = "#div_canvas > svg > g:nth-child(" + (inheri_set[1]) + ")";
+
+            let inheri_relation = "#div_dialog_0 > select > option:nth-child(2)";
+            //tiny offset to not hit other arrows
+            let offset = 2 * inheri_set[1];
+            client
+                .moveToElement(sub, 50, 50)
+                .mouseButtonDown('right')
+                .moveToElement(sup, 50 + offset, 50 + offset)
+                .mouseButtonUp('right')
+                .pause(500)
+                .click(inheri_relation)
+                .waitForElementPresent("#dialog_btn", 1000, "Inheri menu opens")
+                .click("#dialog_btn")
+                .pause(500)
+                .waitForElementNotPresent("#dialog_btn", 1000, "Inheri menu closes")
+                .moveToElement(canvas, 0, 100)
+                .mouseButtonClick('left')
+                .pause(500)
+            ;
         }
 
-        // let element = ;
-        // let element2 = "#div_canvas > svg > g:nth-child(4)";
-        //
-        // client.pause(100)
-        //     .moveToElement(element, 10, 10)
-        //     .mouseButtonClick('middle');
 
-        //client.pause(000);
+        //client.pause(5000);
     },
 
     after: function (client) {