Преглед на файлове

Add initial building of CS model.

Bentley James Oakes преди 7 години
родител
ревизия
c5a67ce6e7
променени са 1 файла, в които са добавени 77 реда и са изтрити 3 реда
  1. 77 3
      tests/05_creating_dsl.js

+ 77 - 3
tests/05_creating_dsl.js

@@ -350,9 +350,9 @@ module.exports = {
                     .pause(500);
             }
             client.getElementSize(assoc_div, function (result) {
-                client
-                    .moveToElement(assoc_div, result.value.width / 2, result.value.height / 2)
-                    .mouseButtonClick('middle')
+
+                model_building_utils.move_to_element_ratio(client, assoc_div, 50, 50)
+                client.mouseButtonClick('middle')
                     .waitForElementPresent("#dialog_btn", 1000, "Editing assoc name opens")
                     .clearValue(name_field)
                     .setValue(name_field, name);
@@ -787,8 +787,82 @@ module.exports = {
 
     'Create CS model': function (client) {
 
+        let filename = '/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax.defaultIcons.metamodel';
+        test_utils.load_toolbar(client, [filename]);
+
+        let classIcon = "#\\/Formalisms\\/__LanguageSyntax__\\/ConcreteSyntax\\/ConcreteSyntax\\.defaultIcons\\.metamodel\\/IconIcon";
+        client.waitForElementPresent(classIcon, 2000, "Check for class icon...");
+        client.click(classIcon);
+
+        let canvas = "#div_canvas";
+        client.waitForElementPresent(canvas, 1000, "Checking for canvas...");
+
+        let test_folder = "autotest";
+        let name_field = "#tr_typename > td:nth-child(2) > textarea";
+        let num_elements = 0;
+
+        //BUILD CLASSES
+        let icon_type = "#\\/Formalisms\\/__LanguageSyntax__\\/ConcreteSyntax\\/ConcreteSyntax\\.defaultIcons\\/IconIcon\\/";
+
+        let start_x = 50;
+        let x_diff = 350;
+        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 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
+        for (let i = 0; i < num_classes; i++) {
+            let class_name = "Class" + String.fromCharCode(65 + i) + "Icon";
+            let attrs = {};
+            attrs[name_field] = class_name;
+            model_building_utils.set_attribs(client, i, attrs, icon_type);
+        }
+
+        // BUILD TEXT FOR ICONS
+        let textIcon = "#\\/Formalisms\\/__LanguageSyntax__\\/ConcreteSyntax\\/ConcreteSyntax\\.defaultIcons\\.metamodel\\/TextIcon";
+        let textType = "#\\/Formalisms\\/__LanguageSyntax__\\/ConcreteSyntax\\/ConcreteSyntax\\.defaultIcons\\/TextIcon\\/";
+        let textContent_field = "#tr_textContent > td:nth-child(2) > textarea";
+
+        client.waitForElementPresent(textIcon, 2000, "Check for text icon...");
+        client.click(textIcon);
+
+        for (let i = 0; i < num_classes; i++) {
+
+            let text = "Class" + String.fromCharCode(65 + i);
+
+            let textDiv = model_building_utils.build_div(textType, num_elements);
+            let iconDiv = model_building_utils.build_div(icon_type, i);
+
+            let attrs = {};
+            attrs[textContent_field] = text;
+
+            client
+                .pause(300)
+                .moveToElement(canvas, 20, 200)
+                .mouseButtonClick('right')
+                .pause(500)
+                .waitForElementPresent(textDiv, 500, "Created text: " + textDiv);
+
+            model_building_utils.set_attribs(client, num_elements, attrs, textType);
 
+            client.moveToElement(textDiv, 10, 10)
+                .mouseButtonClick('left')
+                .pause(300)
+                .mouseButtonDown('left');
 
+            model_building_utils.move_to_element_ratio(client, iconDiv, 50, 10);
+            client.mouseButtonUp('left');
+
+            num_elements++;
+
+            client.pause(2000);
+        }
     },
 
     after: function (client) {