using System.Linq;
using System.Text;
using NUnit.Framework;
+using Newtonsoft.Json;
+using Pithos.Client.WPF.SelectiveSynch;
using Pithos.Client.WPF.Utils;
+using Pithos.Interfaces;
+using System.IO;
namespace Pithos.Client.WPF.Test
{
[TestFixture]
- class NodeTest
+ internal class NodeTest
{
[Test]
public void TestIteration()
{
- var root = new Node<int>{Path = "Root",
- Children =
- {
- new Node<int> {Path = "Root/Path1",
- Children =
- {
- new Node<int>{Path="Root/Path1/Path11",
- Children=
- {
- new Node<int>{Path="Root/Path1/Path11/Path111",
- Children=
- {
- new Node<int>{Path="Root/Path1/Path11/Path111/File1"}
- }}
- }
- },
- new Node<int>{Path="Root/Path1/File2"}
- }
- },
- }
- };
+ var root = new Node<int>
+ {
+ Path = "Root",
+ Children =
+ {
+ new Node<int>
+ {
+ Path = "Root/Path1",
+ Children =
+ {
+ new Node<int>
+ {
+ Path = "Root/Path1/Path11",
+ Children =
+ {
+ new Node<int>
+ {
+ Path = "Root/Path1/Path11/Path111",
+ Children =
+ {
+ new Node<int>
+ {
+ Path =
+ "Root/Path1/Path11/Path111/File1"
+ }
+ }
+ }
+ }
+ },
+ new Node<int> {Path = "Root/Path1/File2"}
+ }
+ },
+ }
+ };
Assert.That(root.Count(), Is.EqualTo(6));
}
-
+
[Test]
public void TestEquals()
{
- var target = new Node<int>{Path = "Root",
- Children =
- {
- new Node<int> {Path = "Root/Path1",
- Children =
- {
- new Node<int>{Path="Root/Path1/Path11",
- Children=
- {
- new Node<int>{Path="Root/Path1/Path11/Path111",
- Children=
- {
- new Node<int>{Path="Root/Path1/Path11/Path111/File1"}
- }}
- }
- },
- new Node<int>{Path="Root/Path1/File2"}
- }
- },
- }
- };
- var source= new Node<int>{Path = "Root",
- Children =
- {
- new Node<int>{Path = "Root/Path1",
- Children =
- {
- new Node<int>{Path="Root/Path1/Path11",
- Children=
- {
- new Node<int>{Path="Root/Path1/Path11/Path111",
- Children=
- {
- new Node<int>{Path="Root/Path1/Path11/Path111/File1"}
- }}
- }
- },
- new Node<int>{Path="Root/Path1/File2"}
- }
- },
- }
- };
- Assert.That(source.Equals(target), Is.True);
+ var target = new Node<int>
+ {
+ Path = "Root",
+ Children =
+ {
+ new Node<int>
+ {
+ Path = "Root/Path1",
+ Children =
+ {
+ new Node<int>
+ {
+ Path = "Root/Path1/Path11",
+ Children =
+ {
+ new Node<int>
+ {
+ Path = "Root/Path1/Path11/Path111",
+ Children =
+ {
+ new Node<int>
+ {
+ Path =
+ "Root/Path1/Path11/Path111/File1"
+ }
+ }
+ }
+ }
+ },
+ new Node<int> {Path = "Root/Path1/File2"}
+ }
+ },
+ }
+ };
+ var source = new Node<int>
+ {
+ Path = "Root",
+ Children =
+ {
+ new Node<int>
+ {
+ Path = "Root/Path1",
+ Children =
+ {
+ new Node<int>
+ {
+ Path = "Root/Path1/Path11",
+ Children =
+ {
+ new Node<int>
+ {
+ Path = "Root/Path1/Path11/Path111",
+ Children =
+ {
+ new Node<int>
+ {
+ Path =
+ "Root/Path1/Path11/Path111/File1"
+ }
+ }
+ }
+ }
+ },
+ new Node<int> {Path = "Root/Path1/File2"}
+ }
+ },
+ }
+ };
+ Assert.That(source.Equals(target), Is.True);
}
[Test]
public void TestToTree()
{
- var target = new Node<int>{Path = "Root",
- Children =
- {
- new Node<int>{Path = "Root/Path1",
- Children =
- {
- new Node<int>{Path="Root/Path1/File2"},
- new Node<int>{Path="Root/Path1/Path11",
- Children=
- {
- new Node<int>{Path="Root/Path1/Path11/Path111",
- Children=
- {
- new Node<int>{Path="Root/Path1/Path11/Path111/File1"}
- }}
- }
- },
- }
- },
- }
- };
- var source= new[]
- {
- Tuple.Create("Root",0),
- Tuple.Create("Root/Path1",0),
- Tuple.Create("Root/Path1/Path11",0),
- Tuple.Create("Root/Path1/Path11/Path111",0),
- Tuple.Create("Root/Path1/Path11/Path111/File1",0),
- Tuple.Create("Root/Path1/File2",0)
- };
+ var target = new Node<int>
+ {
+ Path = "Root",
+ Children =
+ {
+ new Node<int>
+ {
+ Path = "Root/Path1",
+ Children =
+ {
+ new Node<int> {Path = "Root/Path1/File2"},
+ new Node<int>
+ {
+ Path = "Root/Path1/Path11",
+ Children =
+ {
+ new Node<int>
+ {
+ Path = "Root/Path1/Path11/Path111",
+ Children =
+ {
+ new Node<int>
+ {
+ Path =
+ "Root/Path1/Path11/Path111/File1"
+ }
+ }
+ }
+ }
+ },
+ }
+ },
+ }
+ };
+ var source = new[]
+ {
+ Tuple.Create("Root", 0),
+ Tuple.Create("Root/Path1", 0),
+ Tuple.Create("Root/Path1/Path11", 0),
+ Tuple.Create("Root/Path1/Path11/Path111", 0),
+ Tuple.Create("Root/Path1/Path11/Path111/File1", 0),
+ Tuple.Create("Root/Path1/File2", 0)
+ };
+
+ Assert.That(source.ToTree(s => s.Item1, s => s.Item2).First().Equals(target), Is.True);
+ }
+
+ [Test]
+
+ public void TestObjectInfoToTree()
+ {
+
+ var account = "someaccount";
+ var container = "Root";
+ var source = new[]
+ {
+ new ObjectInfo
+ {
+ Account = account,
+ Container = container,
+ Name = "Path1",
+ Content_Type = "application/directory"
+ },
+ new ObjectInfo
+ {
+ Account = account,
+ Container = container,
+ Name = "Path1/Path11",
+ Content_Type = "application/folder"
+ },
+ new ObjectInfo
+ {Account = account, Container = container, Name = "Path1/Path11/Path111"},
+ new ObjectInfo
+ {
+ Account = account,
+ Container = container,
+ Name = "Path1/Path11/Path111/File1",
+ Content_Type = "application/octet-stream"
+ },
+ new ObjectInfo {Account = account, Container = container, Name = "Path1/File2"},
+ new ObjectInfo {Account = account, Container = container, Name = "Path1/File3"},
+ new ObjectInfo {Account = account, Container = container, Name = "Path1/File"},
+ new ObjectInfo {Account = account, Container = container, Name = "Path2/File2"},
+ new ObjectInfo {Account = account, Container = container, Name = "Path2/Path21/File2"},
+ new ObjectInfo {Account = account, Container = container, Name = "File02"},
+ new ObjectInfo {Account = account, Container = container, Name = "File03"}
+ };
+
+ var tree = source. ToTree();
+ var allNodes = (from DirectoryRecord root in tree
+ from DirectoryRecord record in root
+ select record).ToList();
+ Assert.That(allNodes.Count, Is.EqualTo(5));
+ }
+ public void InferFromPath()
+ {
+
+ var account = "someaccount";
+ var container = "Root";
+ var source = new[]
+ {
+ new ObjectInfo {Account = account, Container = container, Name = "Path1/File2"},
+ new ObjectInfo {Account = account, Container = container, Name = "Path1/File3"},
+ new ObjectInfo {Account = account, Container = container, Name = "Path1/Path11/Path111/File3"},
+ new ObjectInfo {Account = account, Container = container, Name = "Path2"},
+ new ObjectInfo {Account = account, Container = container, Name = "Path2/Path21",Content_Type="application/directory"},
+ new ObjectInfo {Account = account, Container = container, Name = "Path2/Path21/Path01",Content_Type="application/directory"},
+ new ObjectInfo {Account = account, Container = container, Name = "Path2/Path21/File211"},
+ new ObjectInfo {Account = account, Container = container, Name = "x2",Content_Type="application/directory"},
+ new ObjectInfo {Account = account, Container = container, Name = "x2/x21",Content_Type="application/directory"},
+ new ObjectInfo {Account = account, Container = container, Name = "x2/x22",Content_Type="application/directory"},
+ };
+
+ var tree = source.ToTree();
+ var allNodes = (from DirectoryRecord root in tree
+ from DirectoryRecord record in root
+ select record).ToList();
+ //Root Nodes
+ Assert.That(tree.Count, Is.EqualTo(3));
+ //Total nodes
+ Assert.That(allNodes.Count, Is.EqualTo(9));
+
+ Assert.That(allNodes.Any(r=>r.DisplayName=="Path1"));
+ Assert.That(allNodes.Any(r => r.DisplayName == "Path11"));
+ Assert.That(allNodes.Any(r => r.DisplayName == "Path111"));
+ Assert.That(allNodes.Any(r => r.DisplayName == "Path2"));
+ Assert.That(allNodes.Any(r => r.DisplayName == "Path21"));
+ }
- Assert.That(source.ToTree(s=>s.Item1,s=>s.Item2).First().Equals(target), Is.True);
+
+ [Test]
+ public void TestShared()
+ {
+ var content = File.ReadAllText("json.txt");
+ var items=JsonConvert.DeserializeObject<IList<ObjectInfo>>(content);
+ Assert.That(items.Count,Is.EqualTo(23));
+ var tree = items.ToTree();
+ var allNodes = (from DirectoryRecord root in tree
+ from DirectoryRecord record in root
+ select record).ToList();
+ Assert.That(allNodes.Count,Is.EqualTo(10));
+ }
+
+ [Test]
+ public void TestOwn()
+ {
+ var content = File.ReadAllText("json2.txt");
+ var items=JsonConvert.DeserializeObject<IList<ObjectInfo>>(content);
+ Assert.That(items.Count,Is.EqualTo(22));
+ var tree = items.ToTree();
+ var allNodes = (from DirectoryRecord root in tree
+ from DirectoryRecord record in root
+ select record).ToList();
+ Assert.That(allNodes.Count,Is.EqualTo(9));
+ }
+
+ [Test]
+ public void TestUri()
+ {
+ var storageUri = new Uri("http://pithos.okeanos.grnet.gr/v1/pkanavos@gmail.com");
+ var uri = new Uri(storageUri, "pithos");
+
+ var expected = new Uri("http://pithos.okeanos.grnet.gr/v1/pkanavos@gmail.com/pithos");
+ Assert.That(uri, Is.EqualTo(expected));
}
}
}