Bug 267354:
Actual test classes and resource
diff --git a/tests/org.eclipse.gmf.tests/models/tests/267354-FigureRefChildren.gmfgraph b/tests/org.eclipse.gmf.tests/models/tests/267354-FigureRefChildren.gmfgraph
new file mode 100644
index 0000000..dbaeacc
--- /dev/null
+++ b/tests/org.eclipse.gmf.tests/models/tests/267354-FigureRefChildren.gmfgraph
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gmfgraph:Canvas xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:gmfgraph="http://www.eclipse.org/gmf/2006/GraphicalDefinition">
+  <figures>
+    <figures
+        xsi:type="gmfgraph:Rectangle"
+        name="figure"/>
+    <descriptors
+        name="desc">
+      <actualFigure
+          xsi:type="gmfgraph:FigureRef"
+          figure="//@figures.0/@figures.0">
+        <foregroundColor
+            xsi:type="gmfgraph:ConstantColor"
+            value="lightGreen"/>
+      </actualFigure>
+    </descriptors>
+  </figures>
+  <nodes
+      name="node"
+      figure="desc"/>
+</gmfgraph:Canvas>
diff --git a/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/AllSWTBotTests.java b/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/AllSWTBotTests.java
new file mode 100644
index 0000000..57857de
--- /dev/null
+++ b/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/AllSWTBotTests.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+* Copyright (c) 2011 EBM Websourcing (PetalsLink)
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Mickael Istria (EBM - PetalsLink) : initial implementation
+*******************************************************************************/
+package org.eclipse.gmf.tests;
+
+import org.eclipse.gmf.tests.gen.swtbot.FigureGenerationTest;
+import org.junit.BeforeClass;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+@RunWith(Suite.class)
+@SuiteClasses({
+	FigureGenerationTest.class
+})
+public class AllSWTBotTests {
+	
+	@BeforeClass
+	public static void setUp() throws Exception {
+		if (System.getProperty("buildingWithTycho") != null) {
+			System.err.println("Generating a target platform");
+			Utils.setTargetPlatform();
+		}
+	}
+}
diff --git a/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/gen/swtbot/FigureGenerationTest.java b/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/gen/swtbot/FigureGenerationTest.java
new file mode 100644
index 0000000..95dbdbd
--- /dev/null
+++ b/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/gen/swtbot/FigureGenerationTest.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+* Copyright (c) 2011 EBM Websourcing (PetalsLink)
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Mickael Istria (EBM - PetalsLink) : initial implementation
+*******************************************************************************/
+package org.eclipse.gmf.tests.gen.swtbot;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swtbot.eclipse.finder.SWTBotEclipseTestCase;
+import org.eclipse.swtbot.swt.finder.SWTBot;
+import org.eclipse.swtbot.swt.finder.waits.ICondition;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.ide.IDE;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class FigureGenerationTest extends SWTBotEclipseTestCase {
+
+	@Test
+	public void testBug267354_FigureRefChildren() throws Exception {
+		// Don't use SWTBot to save time and not related to GMF.
+		Display.getDefault().asyncExec(new Runnable() {
+			public void run() {
+				try {
+					IProject proj = ResourcesPlugin.getWorkspace().getRoot().getProject("testProjectBug267354");
+					proj.create(new NullProgressMonitor());
+					proj.open(new NullProgressMonitor());
+					IFile file = proj.getFile("267354-FigureRefChildren.gmfgraph");
+					file.create(getClass().getClassLoader().getResourceAsStream("/models/tests/267354-FigureRefChildren.gmfgraph"), false, new NullProgressMonitor());
+					IDE.openEditor(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), file, "org.eclipse.gmf.gmfgraph.presentation.GMFGraphEditorID", true);
+				} catch (Exception ex) {
+					ex.printStackTrace();
+				}
+			}
+		});
+		SWTBotTreeItem figureGalleryNode = bot.editorByTitle("267354-FigureRefChildren.gmfgraph").bot().tree().getAllItems()[0].expand().getNode("Canvas").expand().getNode("Figure Gallery").click();
+		figureGalleryNode.contextMenu("Generate Figures Plug-in ...").click();
+		bot.shell("Figure Gallery Generator").bot().text().setText("org.eclipse.gmf.testProjectBug267354");
+		bot.button("OK").click();
+		bot.waitWhile(new ICondition() {
+			@Override
+			public boolean test() throws Exception {
+				return bot.activeShell().getText().equals("Generate Figures Plug-in ...");
+			}
+			
+			@Override
+			public void init(SWTBot bot) {
+			}
+			
+			@Override
+			public String getFailureMessage() {
+				return null;
+			}
+		}, 40000);
+		Display.getDefault().asyncExec(new Runnable() {
+			@Override
+			public void run() {
+				try {
+					IFile file = ResourcesPlugin.getWorkspace().getRoot().getProject("org.eclipse.gmf.testProjectBug267354").getFile(new Path("src/org/eclipse/gmf/testProjectBug267354/Desc.java"));
+					IDE.openEditor(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), file);
+				} catch (Exception ex) {
+					ex.printStackTrace();
+				}
+			}
+		});
+		Assert.assertTrue("Did not find specified background color attribute", bot.editorByTitle("Desc.java").toTextEditor().getText().contains("ColorConstants.lightGreen"));
+	}
+}