예제 #1
0
        public ShowNotesViewModel(INotesProvider notesProvider, IInteractionService interactionService)
        {
            _notesProvider      = notesProvider;
            _interactionService = interactionService;

            _interactionService.ItemClicked += SetFavorite;
        }
예제 #2
0
        private void RelationSpecial()
        {
            Clear();

            INotesProvider npro = Provider.NotesProvider;

            IRelationsProvider pro = Provider.RelationsProvider;

            string[] usernames = new string[] { "user" };

            List <(int, string)>             nodes = new List <(int, string)>();
            Dictionary <int, HashSet <int> > adjs  = new Dictionary <int, HashSet <int> >();

            for (int i = 0; i < TestCount; i++)
            {
                Note data = new Note
                {
                    Title      = $"item {i}",
                    Content    = $"item content {i}",
                    CategoryId = null,
                };
                string username = random.Choice(usernames);
                int?   tid      = npro.Create(data, username).Result;
                Assert.IsTrue(tid.HasValue, "create failed");
                nodes.Add((tid.Value, username));
                adjs.Add(tid.Value, new HashSet <int>());
            }

            for (int i = 0; i < TestCount; i++)
            {
                Relation data = new Relation
                {
                    From = random.Choice(nodes).Item1,
                    To   = random.Choice(nodes).Item1,
                };
                string username = random.Choice(usernames);

                {
                    int?tid = pro.Create(data, username).Result;
                    Assert.IsTrue(tid.HasValue, "create failed");
                    adjs[data.From].Add(data.To);
                    adjs[data.To].Add(data.From);
                }
            }

            foreach ((int id, string user) in nodes)
            {
                IEnumerable <Relation> actual = pro.GetAdjacents(id, user).Result;
                CollectionAssert.AreEquivalent(adjs[id].ToArray(), new HashSet <int>(actual.Select(x => x.From ^ x.To ^ id)).ToArray());
            }
            foreach ((int id, string user) in nodes)
            {
                pro.ClearAdjacents(id, user).Wait();
                Assert.IsFalse(pro.GetAdjacents(id, user).Result.Any());
            }
        }
예제 #3
0
파일: Notes.cs 프로젝트: sidiandi/hagen
        public Notes(IContext context)
        {
            var notesDir = context.DocumentDirectory.CatDir("Notes");

            notesDir.EnsureDirectoryExists();

            var dropboxNotesDir = Sidi.IO.Paths.GetFolderPath(System.Environment.SpecialFolder.UserProfile).CatDir("Dropbox", "hagen", "Notes");

            _notesProvider = new MultiNotesProvider(new[] { notesDir, dropboxNotesDir }.Where(_ => _.IsDirectory)
                                                    .Select(_ => new FileSystemWatcherNotesProvider(_)).ToArray());
        }
예제 #4
0
        private void NoteFailed()
        {
            string username = random.Choice(usernames);

            Provider.CategoriesProvider.Clear(username).Wait();
            INotesProvider pro = Provider.NotesProvider;

            Assert.IsNull(pro.Create(new Note {
                Title = null
            }, username).Result, "node name is null");
            Assert.IsNull(pro.Create(new Note {
                Title = ""
            }, username).Result, "node name is empty");
            Assert.IsNull(pro.Create(new Note {
                Title = "a", CategoryId = 0
            }, username).Result, "no this tag but create node");
        }
예제 #5
0
        private void NoteBasic()
        {
            INotesProvider pro = Provider.NotesProvider;

            Clear();
            for (int i = 0; i < TestCount; i++)
            {
                Note data = new Note
                {
                    Title      = $"item {i}",
                    Content    = $"item content {i}",
                    CategoryId = null,
                };
                string username = random.Choice(usernames);
                data.UserId = username;

                Assert.AreEqual(data, data.Clone(), "clone failed");

                int id;
                {
                    int?tid = pro.Create(data, username).Result;
                    Assert.IsTrue(tid.HasValue, "create failed");
                    id = tid.Value;

                    Assert.IsNotNull(pro.Get(id, username), "get after create failed");

                    Note actual = pro.Get(id, username).Result;
                    Valid(actual, username);

                    data.Id = id;
                    Assert.AreEqual(data.Title, actual.Title, "get failed");
                    Assert.AreEqual(data.Content, actual.Content, "get failed");
                }

                {
                    data.Title   = $"item {i} update";
                    data.Content = $"item {i} update";
                    data.Id      = random.Next();
                    Assert.AreEqual(id, pro.Update(id, data, username).Result, "update failed");

                    IEnumerable <Note> items = pro.Query(id, data.Title, data.Content, null, null, null, null, null, null, username).Result;
                    Assert.AreEqual(1, items.Count(), "query failed");
                    Note actual = items.First();
                    Valid(actual, username);

                    data.Id = id;
                    Assert.AreEqual(data.Title, actual.Title, "query failed");
                    Assert.AreEqual(data.Content, actual.Content, "query failed");
                }

                if (random.NextDouble() < DeleteRate)
                {
                    Assert.IsNotNull(pro.Delete(id, username).Result, "delete failed");
                    Assert.IsNull(pro.Get(id, username).Result, "get after delete failed");
                }
            }

            foreach (string user in usernames)
            {
                IEnumerable <Note> items = pro.GetAll(user).Result;
                foreach (Note v in items)
                {
                    Valid(v, user);
                }
            }
        }
예제 #6
0
        private void RelationBasic()
        {
            Clear();

            INotesProvider npro = Provider.NotesProvider;

            IRelationsProvider pro = Provider.RelationsProvider;

            string[] usernames = new string[] { "user" };

            List <int> nodes = new List <int>();

            for (int i = 0; i < TestCount; i++)
            {
                Note data = new Note
                {
                    Title      = $"item {i}",
                    Content    = $"item content {i}",
                    CategoryId = null,
                };
                string username = random.Choice(usernames);
                int?   tid      = npro.Create(data, username).Result;
                Assert.IsTrue(tid.HasValue, "create failed");
                nodes.Add(tid.Value);
            }

            for (int i = 0; i < TestCount; i++)
            {
                Relation data = new Relation
                {
                    From = random.Choice(nodes),
                    To   = random.Choice(nodes),
                };
                string username = random.Choice(usernames);
                Assert.AreEqual(data, data.Clone());

                int id;
                {
                    int?tid = pro.Create(data, username).Result;
                    Assert.IsTrue(tid.HasValue, "create failed");
                    id = tid.Value;

                    Assert.IsNotNull(pro.Get(id, username), "get after create failed");

                    Relation actual = pro.Get(id, username).Result;
                    Valid(actual, username);

                    data.Id = id;
                    Assert.AreEqual(data, actual, "get failed");
                    Assert.AreEqual(data.GetHashCode(), actual.GetHashCode(), "get failed");
                }

                {
                    data.From = random.Choice(nodes);
                    data.To   = random.Choice(nodes);
                    data.Id   = random.Next();
                    Assert.AreEqual(id, pro.Update(id, data, username).Result, "update failed");

                    IEnumerable <Relation> items = pro.Query(id, data.From, data.To, username).Result;
                    Assert.AreEqual(1, items.Count(), "query failed");
                    Relation actual = items.First();
                    Valid(actual, username);

                    data.Id = id;
                    Assert.AreEqual(data, actual, "query failed");
                }

                if (random.NextDouble() < DeleteRate)
                {
                    Assert.IsNotNull(pro.Delete(id, username).Result, "delete failed");
                    Assert.IsNull(pro.Get(id, username).Result, "get after delete failed");
                }
            }

            foreach (string user in usernames)
            {
                IEnumerable <Relation> items = pro.GetAll(user).Result;
                foreach (Relation v in items)
                {
                    Valid(v, user);
                }
            }
        }
 public CreateNoteViewModel(INotesProvider notesProvider)
 {
     _notesProvider = notesProvider;
 }
예제 #8
0
 public FavoriteNotesViewModel(INotesProvider notesProvider)
 {
     _notesProvider = notesProvider;
 }
예제 #9
0
 public NotesController(INotesProvider notesProvider, INotesProcessor notesProcessor)
 {
     _notesProvider  = notesProvider;
     _notesProcessor = notesProcessor;
 }
예제 #10
0
파일: Notes.cs 프로젝트: sidiandi/hagen
 internal Notes(INotesProvider notesProvider)
 {
     _notesProvider = notesProvider;
 }
예제 #11
0
 public NotesController(IDataProvider provider, IIdentityDataGetter identityDataGetter)
 {
     this.provider           = provider.NotesProvider;
     this.identityDataGetter = identityDataGetter;
 }