public void AddDataset() { // Create a 'binary' tree of datasets. This should create the following tree: // X // / \ // / \ // / \ // / \ // / \ // X X var nodes = new List <Tuple <Mock <IProxyDataset>, List <Mock <IProxyDataset> > > >(); for (int i = 0; i < 3; i++) { var childCollection = new List <Mock <IProxyDataset> >(); var child = CreateDataset(i, childCollection); nodes.Add(new Tuple <Mock <IProxyDataset>, List <Mock <IProxyDataset> > >(child, childCollection)); } var context = new Mock <IContextAware>(); { context.Setup(c => c.IsSynchronized) .Returns(true); } var tracker = new Mock <ITrackSteppingProgress>(); var project = new Mock <IProject>(); { project.Setup(p => p.BaseDataset()) .Returns(nodes[0].Item1.Object); } var projectFacade = new ProjectFacade(project.Object); var projectLink = new Mock <ILinkToProjects>(); { projectLink.Setup(p => p.ActiveProject()) .Returns(projectFacade); } Func <DatasetFacade, DatasetModel> toModel = d => new DatasetModel(context.Object, tracker.Object, projectLink.Object, d); var model = new DatasetGraphModel(context.Object, projectFacade, toModel); var graph = model.Graph; var rootVertex = graph.Vertices.FirstOrDefault(d => string.Equals(d.Model.Name, 0.ToString(CultureInfo.InvariantCulture))); var parent = nodes[0]; // First node parent.Item2.Add(nodes[1].Item1); project.Raise(p => p.OnDatasetCreated += null, EventArgs.Empty); var vertex = graph.Vertices.FirstOrDefault(d => string.Equals(d.Model.Name, 1.ToString(CultureInfo.InvariantCulture))); Assert.IsNotNull(vertex); var edges = graph.InEdges(vertex); Assert.AreEqual(1, edges.Count()); Assert.AreSame(rootVertex, edges.First().Source); // Second node parent.Item2.Add(nodes[2].Item1); project.Raise(p => p.OnDatasetCreated += null, EventArgs.Empty); vertex = graph.Vertices.FirstOrDefault(d => string.Equals(d.Model.Name, 2.ToString(CultureInfo.InvariantCulture))); Assert.IsNotNull(vertex); edges = graph.InEdges(vertex); Assert.AreEqual(1, edges.Count()); Assert.AreSame(rootVertex, edges.First().Source); }
public void AddDataset() { // Create a 'binary' tree of datasets. This should create the following tree: // X // / \ // / \ // / \ // / \ // / \ // X X var nodes = new List<Tuple<Mock<IProxyDataset>, List<Mock<IProxyDataset>>>>(); for (int i = 0; i < 3; i++) { var childCollection = new List<Mock<IProxyDataset>>(); var child = CreateDataset(i, childCollection); nodes.Add(new Tuple<Mock<IProxyDataset>, List<Mock<IProxyDataset>>>(child, childCollection)); } var context = new Mock<IContextAware>(); { context.Setup(c => c.IsSynchronized) .Returns(true); } var tracker = new Mock<ITrackSteppingProgress>(); var project = new Mock<IProject>(); { project.Setup(p => p.BaseDataset()) .Returns(nodes[0].Item1.Object); } var projectFacade = new ProjectFacade(project.Object); var projectLink = new Mock<ILinkToProjects>(); { projectLink.Setup(p => p.ActiveProject()) .Returns(projectFacade); } Func<DatasetFacade, DatasetModel> toModel = d => new DatasetModel(context.Object, tracker.Object, projectLink.Object, d); var model = new DatasetGraphModel(context.Object, projectFacade, toModel); var graph = model.Graph; var rootVertex = graph.Vertices.FirstOrDefault(d => string.Equals(d.Model.Name, 0.ToString(CultureInfo.InvariantCulture))); var parent = nodes[0]; // First node parent.Item2.Add(nodes[1].Item1); project.Raise(p => p.OnDatasetCreated += null, EventArgs.Empty); var vertex = graph.Vertices.FirstOrDefault(d => string.Equals(d.Model.Name, 1.ToString(CultureInfo.InvariantCulture))); Assert.IsNotNull(vertex); var edges = graph.InEdges(vertex); Assert.AreEqual(1, edges.Count()); Assert.AreSame(rootVertex, edges.First().Source); // Second node parent.Item2.Add(nodes[2].Item1); project.Raise(p => p.OnDatasetCreated += null, EventArgs.Empty); vertex = graph.Vertices.FirstOrDefault(d => string.Equals(d.Model.Name, 2.ToString(CultureInfo.InvariantCulture))); Assert.IsNotNull(vertex); edges = graph.InEdges(vertex); Assert.AreEqual(1, edges.Count()); Assert.AreSame(rootVertex, edges.First().Source); }
public void ReloadProject() { // Create a 'binary' tree of datasets. This should create the following tree: // X // / \ // / \ // / \ // / \ // / \ // X X // / \ / \ // / \ / \ // / \ / \ // X X X X // / \ / \ // X X X X var nodes = new List <Mock <IProxyDataset> >(); var datasets = new Queue <Tuple <Mock <IProxyDataset>, List <Mock <IProxyDataset> > > >(); var rootChildren = new List <Mock <IProxyDataset> >(); var root = CreateDataset(0, rootChildren); datasets.Enqueue(new Tuple <Mock <IProxyDataset>, List <Mock <IProxyDataset> > >(root, rootChildren)); nodes.Add(root); int count = 0; while (count < 10) { var tuple = datasets.Dequeue(); count++; var leftChildCollection = new List <Mock <IProxyDataset> >(); var leftChild = CreateDataset(count, leftChildCollection); tuple.Item2.Add(leftChild); datasets.Enqueue(new Tuple <Mock <IProxyDataset>, List <Mock <IProxyDataset> > >(leftChild, leftChildCollection)); nodes.Add(leftChild); count++; var rightChildCollection = new List <Mock <IProxyDataset> >(); var rightChild = CreateDataset(count, rightChildCollection); tuple.Item2.Add(rightChild); datasets.Enqueue(new Tuple <Mock <IProxyDataset>, List <Mock <IProxyDataset> > >(rightChild, rightChildCollection)); nodes.Add(rightChild); } var context = new Mock <IContextAware>(); { context.Setup(c => c.IsSynchronized) .Returns(true); } var tracker = new Mock <ITrackSteppingProgress>(); var project = new Mock <IProject>(); { project.Setup(p => p.BaseDataset()) .Returns(root.Object); } var projectFacade = new ProjectFacade(project.Object); var projectLink = new Mock <ILinkToProjects>(); { projectLink.Setup(p => p.ActiveProject()) .Returns(projectFacade); } Func <DatasetFacade, DatasetModel> toModel = d => new DatasetModel(context.Object, tracker.Object, projectLink.Object, d); var model = new DatasetGraphModel(context.Object, projectFacade, toModel); var graph = model.Graph; Assert.AreEqual(nodes.Count, graph.VertexCount); var rootVertex = graph.Vertices.FirstOrDefault(d => string.Equals(d.Model.Name, 0.ToString(CultureInfo.InvariantCulture))); Assert.IsNotNull(rootVertex); var vertices = new Queue <DatasetViewVertex>(); var linearisedVertices = new List <DatasetViewVertex>(); vertices.Enqueue(rootVertex); linearisedVertices.Add(rootVertex); while (vertices.Count > 0) { var vertex = vertices.Dequeue(); var outEdges = graph.OutEdges(vertex); foreach (var edge in outEdges) { vertices.Enqueue(edge.Target); linearisedVertices.Add(edge.Target); } } Assert.That( linearisedVertices.Select(l => l.Model.Name), Is.EquivalentTo(nodes.Select(n => n.Object.Name))); }
public void ReloadProject() { // Create a 'binary' tree of datasets. This should create the following tree: // X // / \ // / \ // / \ // / \ // / \ // X X // / \ / \ // / \ / \ // / \ / \ // X X X X // / \ / \ // X X X X var nodes = new List<Mock<IProxyDataset>>(); var datasets = new Queue<Tuple<Mock<IProxyDataset>, List<Mock<IProxyDataset>>>>(); var rootChildren = new List<Mock<IProxyDataset>>(); var root = CreateDataset(0, rootChildren); datasets.Enqueue(new Tuple<Mock<IProxyDataset>, List<Mock<IProxyDataset>>>(root, rootChildren)); nodes.Add(root); int count = 0; while (count < 10) { var tuple = datasets.Dequeue(); count++; var leftChildCollection = new List<Mock<IProxyDataset>>(); var leftChild = CreateDataset(count, leftChildCollection); tuple.Item2.Add(leftChild); datasets.Enqueue(new Tuple<Mock<IProxyDataset>, List<Mock<IProxyDataset>>>(leftChild, leftChildCollection)); nodes.Add(leftChild); count++; var rightChildCollection = new List<Mock<IProxyDataset>>(); var rightChild = CreateDataset(count, rightChildCollection); tuple.Item2.Add(rightChild); datasets.Enqueue(new Tuple<Mock<IProxyDataset>, List<Mock<IProxyDataset>>>(rightChild, rightChildCollection)); nodes.Add(rightChild); } var context = new Mock<IContextAware>(); { context.Setup(c => c.IsSynchronized) .Returns(true); } var tracker = new Mock<ITrackSteppingProgress>(); var project = new Mock<IProject>(); { project.Setup(p => p.BaseDataset()) .Returns(root.Object); } var projectFacade = new ProjectFacade(project.Object); var projectLink = new Mock<ILinkToProjects>(); { projectLink.Setup(p => p.ActiveProject()) .Returns(projectFacade); } Func<DatasetFacade, DatasetModel> toModel = d => new DatasetModel(context.Object, tracker.Object, projectLink.Object, d); var model = new DatasetGraphModel(context.Object, projectFacade, toModel); var graph = model.Graph; Assert.AreEqual(nodes.Count, graph.VertexCount); var rootVertex = graph.Vertices.FirstOrDefault(d => string.Equals(d.Model.Name, 0.ToString(CultureInfo.InvariantCulture))); Assert.IsNotNull(rootVertex); var vertices = new Queue<DatasetViewVertex>(); var linearisedVertices = new List<DatasetViewVertex>(); vertices.Enqueue(rootVertex); linearisedVertices.Add(rootVertex); while (vertices.Count > 0) { var vertex = vertices.Dequeue(); var outEdges = graph.OutEdges(vertex); foreach (var edge in outEdges) { vertices.Enqueue(edge.Target); linearisedVertices.Add(edge.Target); } } Assert.That( linearisedVertices.Select(l => l.Model.Name), Is.EquivalentTo(nodes.Select(n => n.Object.Name))); }