public void  じユーザIDでUserAddedが重複して発生しないかテスト()
        {
            var loggerMock = new Mock <ILogger>();
            var logger     = loggerMock.Object;
            var store      = new Common.SQLiteUserStore(":memory:", logger);
            var dict       = new Dictionary <string, IUser>();

            store.UserAdded += (s, e) =>
            {
                Assert.IsFalse(dict.ContainsKey(e.UserId));
            };
            store.Init();

            var list = new List <string>
            {
                "30662259",
                "30662259",
                "30662259",
                "30662259",
                "30662259",
                "30662259",
                "30662259",
                "30662259",
            };

            System.Threading.Tasks.Parallel.ForEach(list, s =>
            {
                var user = store.GetUser(s);
            });
        }
        public void SaveTest()
        {
            var dbPath = GetTestDBPath();

            try
            {
                var loggerMock = new Mock <ILogger>();
                var logger     = loggerMock.Object;
                var store1     = new Common.SQLiteUserStore(dbPath, logger);

                //ユーザ1,ユーザ2,ユーザ3を作成し、保存して終了する。
                store1.Init();
                {
                    var user1 = store1.GetUser("1");
                    user1.Nickname = "user1";
                    var user2 = store1.GetUser("2");
                    user2.Nickname = "user2";
                    var user3 = store1.GetUser("3");
                    user3.Nickname = "user3";
                }
                store1.Save();
                store1.ClearCache();

                //ユーザ1とユーザ3のみを読み込んでから保存する。
                store1.Init();
                {
                    var user1 = store1.GetUser("1");
                    var user3 = store1.GetUser("3");
                }
                store1.Save();
                store1.ClearCache();

                //ユーザ2を読み込んでコテハンが保存されているかチェックする
                store1.Init();
                {
                    var user2 = store1.GetUser("2");
                    Assert.AreEqual("user2", user2.Nickname);
                }
            }
            finally
            {
                if (File.Exists(dbPath))
                {
                    File.Delete(dbPath);
                }
            }
        }
        public void RestoreTest()
        {
            var dir  = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            var path = System.IO.Path.Combine(dir, "test.db");

            try
            {
                var loggerMock = new Mock <ILogger>();
                var logger     = loggerMock.Object;
                var store      = new Common.SQLiteUserStore(path, logger);
                store.Init();
                Assert.AreEqual(0, store.GetAllUsers().Count());
                var user1_1 = store.GetUser("1");
                user1_1.Name = new List <IMessagePart> {
                    Common.MessagePartFactory.CreateMessageText("name")
                };
                user1_1.Nickname      = "abc";
                user1_1.BackColorArgb = "#FFFF0000";
                user1_1.ForeColorArgb = "#FF0000FF";
                user1_1.IsNgUser      = true;
                store.Save();
                store.ClearCache();

                var user1_2 = store.GetUser("1");
                Assert.AreEqual(new List <IMessagePart> {
                    Common.MessagePartFactory.CreateMessageText("name")
                }, user1_2.Name);
                Assert.AreEqual("abc", user1_2.Nickname);
                Assert.AreEqual("#FFFF0000", user1_2.BackColorArgb);
                Assert.AreEqual("#FF0000FF", user1_2.ForeColorArgb);
                Assert.IsTrue(user1_2.IsNgUser);
            }
            finally
            {
                if (File.Exists(path))
                {
                    File.Delete(path);
                }
            }
        }