Index: branches/gteufl/HeuristicLab.Tests/HeuristicLab-3.3/DeepCloneableCloningTest.cs
===================================================================
--- branches/gteufl/HeuristicLab.Tests/HeuristicLab-3.3/DeepCloneableCloningTest.cs	(revision 10225)
+++ branches/gteufl/HeuristicLab.Tests/HeuristicLab-3.3/DeepCloneableCloningTest.cs	(revision 12969)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -25,4 +25,5 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
+using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
 using HeuristicLab.Optimization;
 using HeuristicLab.Persistence.Default.Xml;
@@ -31,15 +32,6 @@
 
 namespace HeuristicLab.Tests {
-  /// <summary>
-  /// Summary description for DeepCloneableCloningTest
-  /// </summary>
   [TestClass]
   public class DeepCloneableCloningTest {
-
-    [ClassInitialize]
-    public static void MyClassInitialize(TestContext testContext) {
-      PluginLoader.Assemblies.Any();
-    }
-
     private TestContext testContextInstance;
     public TestContext TestContext {
@@ -49,9 +41,12 @@
 
     public DeepCloneableCloningTest() {
-      excludedTypes = new HashSet<Type>();
-      excludedTypes.Add(typeof(HeuristicLab.Problems.DataAnalysis.Dataset));
-      excludedTypes.Add(typeof(HeuristicLab.Problems.TravelingSalesman.DistanceMatrix));
-      excludedTypes.Add(typeof(HeuristicLab.Problems.DataAnalysis.ClassificationEnsembleSolution));
-      excludedTypes.Add(typeof(HeuristicLab.Problems.DataAnalysis.RegressionEnsembleSolution));
+      excludedTypes = new HashSet<Type> {
+        typeof (HeuristicLab.Problems.DataAnalysis.Dataset),
+        typeof (HeuristicLab.Problems.TravelingSalesman.DistanceMatrix),
+        typeof (HeuristicLab.Problems.DataAnalysis.ClassificationEnsembleSolution),
+        typeof (HeuristicLab.Problems.DataAnalysis.RegressionEnsembleSolution),
+        typeof (HeuristicLab.Problems.Orienteering.DistanceMatrix)
+      };
+      excludedTypes.Add(typeof(SymbolicExpressionGrammar).Assembly.GetType("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.EmptySymbolicExpressionTreeGrammar"));
 
       foreach (var symbolType in ApplicationManager.Manager.GetTypes(typeof(HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Symbol)))
@@ -94,12 +89,10 @@
         try {
           item = (IDeepCloneable)Activator.CreateInstance(deepCloneableType, nonPublic: false);
-        }
-        catch { continue; } // no default constructor
+        } catch { continue; } // no default constructor
 
         IDeepCloneable clone = null;
         try {
           clone = (IDeepCloneable)item.Clone(new Cloner());
-        }
-        catch (Exception e) {
+        } catch (Exception e) {
           TestContext.WriteLine(Environment.NewLine + deepCloneableType.FullName + ":");
           TestContext.WriteLine("ERROR! " + e.GetType().Name + @" was thrown during cloning.
@@ -126,5 +119,6 @@
     private bool ProcessEqualObjects(IDeepCloneable item, IEnumerable<object> intersections) {
       bool success = true;
-      TestContext.WriteLine(Environment.NewLine + item.GetType().FullName + ":");
+      bool headerWritten = false;
+
       foreach (object o in intersections) {
         string typeName = o.GetType().FullName;
@@ -133,8 +127,19 @@
         } else if (o is IDeepCloneable) {
           string info = (o is IItem) ? ((IItem)o).ItemName + ((o is INamedItem) ? ", " + ((INamedItem)o).Name : String.Empty) : String.Empty;
+          if (!headerWritten) {
+            TestContext.WriteLine(Environment.NewLine + item.GetType().FullName + ":");
+            headerWritten = true;
+          }
           TestContext.WriteLine("POTENTIAL ERROR! A DEEPCLONEABLE WAS NOT DEEP CLONED (" + info + "): " + typeName);
           success = false;
-        } else
+        } else {
+          Array array = o as Array;
+          if (array != null && array.Length == 0) continue; //arrays of length 0 are used inside empty collections
+          if (!headerWritten) {
+            TestContext.WriteLine(Environment.NewLine + item.GetType().FullName + ":");
+            headerWritten = true;
+          }
           TestContext.WriteLine("WARNING: An object of type " + typeName + " is referenced in the original and in the clone.");
+        }
       }
       return success;
