瀏覽代碼

Build icons in CS model.

Bentley James Oakes 7 年之前
父節點
當前提交
80f9ed7a3f
共有 2 個文件被更改,包括 83 次插入16 次删除
  1. 66 9
      tests/05_creating_dsl.js
  2. 17 7
      tests/model_building_utils.js

+ 66 - 9
tests/05_creating_dsl.js

@@ -439,19 +439,19 @@ module.exports = {
         //BUILD CLASSES
         let icon_type = "#\\/Formalisms\\/__LanguageSyntax__\\/ConcreteSyntax\\/ConcreteSyntax\\.defaultIcons\\/IconIcon\\/";
 
-        let start_x = 50;
+        let start_x = 200;
         let x_diff = 350;
-        let x_coords = [start_x];//, start_x + x_diff];//, start_x + 2 * x_diff];
+        let x_coords = [start_x, start_x + x_diff, start_x + 2 * x_diff];
 
-        let start_y = 200;
-        let y_diff = 200;
-        let y_coords = [start_y];//, start_y + y_diff];//, start_y + 2 * y_diff];
+        let start_y = 150;
+        let y_diff = 180;
+        let y_coords = [start_y, start_y + y_diff, start_y + 2 * y_diff];
 
         let num_classes = x_coords.length * y_coords.length;
 
         num_elements = model_building_utils.create_classes(client, x_coords, y_coords, num_elements, icon_type);
 
-        // SET NAMES FOR CLASSES
+        //SET NAMES FOR CLASSES
         for (let i = 0; i < num_classes; i++) {
             let class_name = "Class" + String.fromCharCode(65 + i) + "Icon";
             let attrs = {};
@@ -486,18 +486,75 @@ module.exports = {
 
             model_building_utils.set_attribs(client, num_elements, attrs, textType);
 
+            num_elements++;
+
             client.moveToElement(textDiv, 10, 10)
                 .mouseButtonClick('left')
                 .pause(300)
-                .mouseButtonDown('left');
+                .mouseButtonDown('left')
+                .pause(300);
 
-            model_building_utils.move_to_element_ratio(client, iconDiv, 50, 10);
+            model_building_utils.move_to_element_ratio(client, iconDiv, 35, 15);
             client.mouseButtonUp('left');
 
+            model_building_utils.click_off(client);
+
+            //inner link counts as an element
+            num_elements++;
+        }
+
+
+        // BUILD SYMBOLS FOR ICONS
+        let symbols = ["RectangleIcon", "CircleIcon", "EllipseIcon", "PolygonIcon", "StarIcon", "PathIcon", "ImageIcon"];
+        let getIcon = function (type) {
+            return "#\\/Formalisms\\/__LanguageSyntax__\\/ConcreteSyntax\\/ConcreteSyntax\\.defaultIcons\\.metamodel\\/" + type;
+        };
+        let getType = function (type) {
+            return "#\\/Formalisms\\/__LanguageSyntax__\\/ConcreteSyntax\\/ConcreteSyntax\\.defaultIcons\\/" + type + "\\/";
+        };
+
+        for (let i = 0; i < num_classes; i++) {
+
+            let currSymbol = symbols[i % symbols.length];
+            client.waitForElementPresent(getIcon(currSymbol), 2000, "Check for symbol icon...");
+            client.click(getIcon(currSymbol));
+
+
+            let symbolDiv = model_building_utils.build_div(getType(currSymbol), num_elements);
+            console.log(currSymbol);
+            console.log(symbolDiv);
+            let iconDiv = model_building_utils.build_div(icon_type, i);
+
+
+            client
+                .pause(300)
+                .moveToElement(canvas, 50, 200)
+                .mouseButtonClick('right')
+                .pause(1000)
+                .waitForElementPresent(symbolDiv, 500, "Created symbol: " + symbolDiv);
+
+            model_building_utils.click_off(client);
+
             num_elements++;
 
-            client.pause(2000);
+            model_building_utils.move_to_element_ratio(client, symbolDiv, 50, 50);
+            client
+                .mouseButtonClick('left')
+                .pause(300)
+                .mouseButtonDown('left')
+                .pause(300);
+
+            model_building_utils.move_to_element_ratio(client, iconDiv, 30, 40);
+            client.pause(300).mouseButtonUp('left');
+
+            model_building_utils.click_off(client);
+
+            //inner link counts as an element
+            num_elements++;
         }
+
+        client.pause(1000);
+
     },
 
     after: function (client) {

+ 17 - 7
tests/model_building_utils.js

@@ -43,13 +43,16 @@ function create_classes(client, x_coords, y_coords, curr_num_elements, element_t
 
 function set_attribs(client, num, attrs, element_type) {
 
-    let class_div = "";
+    let element_div = "";
     if (element_type != undefined){
-        class_div = element_type + (num) + "\\2e instance";
+        element_div = this.build_div(element_type, num);
     } else {
-        class_div = this.get_class_div(num);
+        element_div = this.get_class_div(num);
     }
-    client.moveToElement(class_div, 10, 10)
+    //"#\\2f Formalisms\\2f __LanguageSyntax__\\2f ConcreteSyntax\\2f ConcreteSyntax\\2e defaultIcons\\2f TextIcon\\2f 1\\2e instance"
+    client
+        .waitForElementPresent(element_div, 1000, "Find element for attrib set: " + element_div)
+        .moveToElement(element_div, 10, 10)
         .mouseButtonClick('middle')
         .waitForElementPresent("#dialog_btn", 1000, "Editing menu opens");
 
@@ -70,12 +73,18 @@ function set_attribs(client, num, attrs, element_type) {
 function move_to_element_ratio(client, element, x_ratio, y_ratio){
 
     client.getElementSize(element, function (result) {
-        let x_pos = x_ratio/100 * result.value.width;
-        let y_pos = y_ratio/100 * result.value.height;
+        let x_pos = Math.trunc(x_ratio/100 * result.value.width);
+        let y_pos = Math.trunc(y_ratio/100 * result.value.height);
         client.moveToElement(element, x_pos, y_pos);
     });
 }
 
+function click_off(client){
+    client
+        .moveToElement(canvas, 0, 100)
+        .mouseButtonClick('left');
+}
+
 module.exports = {
     '@disabled': true,
     get_element_div,
@@ -84,5 +93,6 @@ module.exports = {
     build_div,
     create_classes,
     set_attribs,
-    move_to_element_ratio
+    move_to_element_ratio,
+    click_off
 };