コード例 #1
0
ファイル: DataStoreTests.cs プロジェクト: codacy-badger/Janus
        private void AssertLoadedDataProviderContains <T>(JanusData storedList, string key, T expected)
        {
            var data = storedList.DataProvider.Get <T>(key);

            Assert.AreEqual(data, expected,
                            "[{0}] Loaded DataProvider value did not match.", _count);
        }
コード例 #2
0
ファイル: DataStoreTests.cs プロジェクト: codacy-badger/Janus
        private void AssertDataProvidersAreEqual(JanusData storedList)
        {
            Assert.AreEqual(storedList.DataProvider.Dict.Count, _data.DataProvider.Dict.Count,
                            "[{0}] Number of values in loaded data provider did not match.", _count);

            foreach (var kvp in _data.DataProvider.Dict)
            {
                AssertLoadedDataProviderContains(storedList, kvp.Key, kvp.Value);
            }
            _count++;
        }
コード例 #3
0
ファイル: DSF_0x2.cs プロジェクト: codacy-badger/Janus
        public void Save(BinaryWriter writer, JanusData data)
        {
            var watchers = data.Watchers;

            foreach (var watcher in watchers)
            {
                writer.Write(Start);
                writer.Write(watcher.Data.WatchDirectory);
                writer.Write(watcher.Data.SyncDirectory);
                writer.Write("*");
                writer.Write(watcher.Data.Recursive);
                writer.Write(watcher.Data.AutoAddFiles);
                writer.Write(watcher.Data.AutoDeleteFiles);
                writer.Write(watcher.Observe);
                writer.Write(End);
            }

            writer.Write(Switch);

            foreach (var kvp in data.DataProvider.Data)
            {
                writer.Write(Start);
                writer.Write(kvp.Key);
                if (kvp.Value is string)
                {
                    writer.Write('s');
                    writer.Write((string)kvp.Value);
                }
                else if (kvp.Value is int)
                {
                    writer.Write('i');
                    writer.Write((int)kvp.Value);
                }
                else if (kvp.Value is double)
                {
                    writer.Write('d');
                    writer.Write((double)kvp.Value);
                }
                else if (kvp.Value is bool)
                {
                    writer.Write('b');
                    writer.Write((bool)kvp.Value);
                }
                writer.Write(End);
            }

            writer.Write(EoF);
        }
コード例 #4
0
ファイル: DataStoreTests.cs プロジェクト: codacy-badger/Janus
        private void AssertLoadedWatchersAreCorrect(JanusData storedList)
        {
            Assert.AreEqual(storedList.Watchers.Count, _data.Watchers.Count,
                            "[{0}] Number of watchers in loaded list does not match saved list.", _count);

            for (var i = 0; i < storedList.Watchers.Count; i++)
            {
                Assert.AreEqual(storedList.Watchers[i], _data.Watchers[i],
                                "[{0}-{1}] Stored watcher was not the same as saved watcher.", _count, i);

                CollectionAssert.AreEqual(storedList.Watchers[i].Data.Filters, _data.Watchers[i].Data.Filters,
                                          "[{0}-{1}] Watcher filters were not the same.", _count, i);
            }

            _count++;
        }
コード例 #5
0
ファイル: DSF_0x3.cs プロジェクト: codacy-badger/Janus
        public JanusData Read(BinaryReader reader)
        {
            var data      = new JanusData();
            var watchMode = true;
            var dataMode  = false;

            var startChar = reader.ReadChar();

            if (startChar != Start)
            {
                if (startChar == Switch)
                {
                    watchMode = false;
                    dataMode  = true;
                }
                else
                {
                    throw new Exception($"Invalid format. Start expected found: '{startChar}' instead");
                }
            }

            while (watchMode)
            {
                var watchPath   = reader.ReadString();
                var endPath     = reader.ReadString();
                var filterCount = reader.ReadInt32();
                var filters     = new ObservableCollection <IFilter>();
                for (var i = 0; i < filterCount; i++)
                {
                    reader.ReadUInt32(); // Filter Behaviour - Unused.
                    var type = reader.ReadString();
                    switch (type)
                    {
                    case "EFF":
                        var patterns = ExtractPatterns(reader);
                        filters.Add(new ExcludeFileFilter(patterns));
                        break;

                    case "EF":
                        patterns = ExtractPatterns(reader);
                        filters.Add(new ExcludeFilter(patterns));
                        break;

                    case "IF":
                        patterns = ExtractPatterns(reader);
                        filters.Add(new IncludeFilter(patterns));
                        break;

                    default:
                        throw new Exception($"Invalid format. Unknown filter: '{type}' found.");
                    }
                }
                var recursive   = reader.ReadBoolean();
                var addFiles    = reader.ReadBoolean();
                var deleteFiles = reader.ReadBoolean();
                var observe     = reader.ReadBoolean();
                var endChar     = reader.ReadChar();

                if (endChar != End)
                {
                    throw new Exception($"Invalid format. End expected found: '{endChar}' instead");
                }

                data.Watchers.Add(new Watcher(watchPath, watchPath, endPath, addFiles, deleteFiles, filters, recursive, observe: observe));

                var next = reader.ReadChar();

                if (next == Switch)
                {
                    watchMode = false;
                    dataMode  = true;
                }
                else if (next != Start)
                {
                    throw new Exception($"Invalid format. Start expected found: '{next}' instead");
                }
            }

            startChar = reader.ReadChar();

            if (startChar != Start)
            {
                if (startChar == EoF)
                {
                    return(data);
                }
                throw new Exception($"Invalid format. Start expected found: '{startChar}' instead");
            }

            while (dataMode)
            {
                var    key  = reader.ReadString();
                var    type = reader.ReadChar();
                object value;
                switch (type)
                {
                case 's':
                    value = reader.ReadString();
                    break;

                case 'i':
                    value = reader.ReadInt32();
                    break;

                case 'd':
                    value = reader.ReadDouble();
                    break;

                case 'b':
                    value = reader.ReadBoolean();
                    break;

                default:
                    throw new Exception($"Invalid format. Unknown DataType: '{type}' instead");
                }

                var endChar = reader.ReadChar();
                if (endChar != End)
                {
                    throw new Exception($"Invalid format. End expected found: '{endChar}' instead");
                }

                data.DataProvider.Add(key, value);

                var next = reader.ReadChar();

                if (next == EoF)
                {
                    dataMode = false;
                }
                else if (next != Start)
                {
                    throw new Exception($"Invalid format. Start expected found: '{next}' instead");
                }
            }

            return(data);
        }
コード例 #6
0
ファイル: DSF_0x3.cs プロジェクト: codacy-badger/Janus
        public void Save(BinaryWriter writer, JanusData data)
        {
            var watchers = data.Watchers;

            foreach (var watcher in watchers)
            {
                writer.Write(Start);
                writer.Write(watcher.Data.WatchDirectory);
                writer.Write(watcher.Data.SyncDirectory);
                if (watcher.Data.Filters == null)
                {
                    writer.Write(0);
                }
                else
                {
                    writer.Write(watcher.Data.Filters.Count);
                    foreach (var filter in watcher.Data.Filters)
                    {
                        writer.Write((uint)filter.Behaviour);
                        var excludeFilter     = filter as ExcludeFilter;
                        var excludeFileFilter = filter as ExcludeFileFilter;
                        var includeFilter     = filter as IncludeFilter;
                        if (excludeFilter != null)
                        {
                            writer.Write("EF");
                            writer.Write(excludeFilter.Filters.Count);
                            foreach (var pattern in excludeFilter.Filters)
                            {
                                writer.Write(pattern);
                            }
                        }
                        else if (excludeFileFilter != null)
                        {
                            writer.Write("EFF");
                            writer.Write(excludeFileFilter.Filters.Count);
                            foreach (var pattern in excludeFileFilter.Filters)
                            {
                                writer.Write(pattern);
                            }
                        }
                        else if (includeFilter != null)
                        {
                            writer.Write("IF");
                            writer.Write(includeFilter.Filters.Count);
                            foreach (var pattern in includeFilter.Filters)
                            {
                                writer.Write(pattern);
                            }
                        }
                        else
                        {
                            writer.Write("???");
                        }
                    }
                }
                writer.Write(watcher.Data.Recursive);
                writer.Write(watcher.Data.AutoAddFiles);
                writer.Write(watcher.Data.AutoDeleteFiles);
                writer.Write(watcher.Observe);
                writer.Write(End);
            }

            writer.Write(Switch);

            foreach (var kvp in data.DataProvider.Data)
            {
                writer.Write(Start);
                writer.Write(kvp.Key);
                if (kvp.Value is string)
                {
                    writer.Write('s');
                    writer.Write((string)kvp.Value);
                }
                else if (kvp.Value is int)
                {
                    writer.Write('i');
                    writer.Write((int)kvp.Value);
                }
                else if (kvp.Value is double)
                {
                    writer.Write('d');
                    writer.Write((double)kvp.Value);
                }
                else if (kvp.Value is bool)
                {
                    writer.Write('b');
                    writer.Write((bool)kvp.Value);
                }
                writer.Write(End);
            }

            writer.Write(EoF);
        }
コード例 #7
0
ファイル: DSF_0x5.cs プロジェクト: codacy-badger/Janus
        public void Save(BinaryWriter writer, JanusData data)
        {
            var watchers = data.Watchers;

            foreach (var watcher in watchers)
            {
                writer.Write(Start);
                writer.Write(watcher.Name);
                writer.Write(watcher.Data.WatchDirectory);
                writer.Write(watcher.Data.SyncDirectory);
                if (watcher.Data.Filters == null)
                {
                    writer.Write(0);
                }
                else
                {
                    writer.Write(watcher.Data.Filters.Count);
                    foreach (var filter in watcher.Data.Filters)
                    {
                        writer.Write((uint)filter.Behaviour);
                        var excludeFilter     = filter as ExcludeFilter;
                        var excludeFileFilter = filter as ExcludeFileFilter;
                        var includeFilter     = filter as IncludeFilter;
                        if (excludeFilter != null)
                        {
                            writer.Write("EF");
                            writer.Write(excludeFilter.Filters.Count);
                            foreach (var pattern in excludeFilter.Filters)
                            {
                                writer.Write(pattern);
                            }
                        }
                        else if (excludeFileFilter != null)
                        {
                            writer.Write("EFF");
                            writer.Write(excludeFileFilter.Filters.Count);
                            foreach (var pattern in excludeFileFilter.Filters)
                            {
                                writer.Write(pattern);
                            }
                        }
                        else if (includeFilter != null)
                        {
                            writer.Write("IF");
                            writer.Write(includeFilter.Filters.Count);
                            foreach (var pattern in includeFilter.Filters)
                            {
                                writer.Write(pattern);
                            }
                        }
                        else
                        {
                            writer.Write("???");
                        }
                    }
                }
                writer.Write(watcher.Data.Recursive);
                writer.Write(watcher.Data.AutoAddFiles);
                writer.Write(watcher.Data.AutoDeleteFiles);
                writer.Write(watcher.Observe);
                writer.Write(watcher.Data.Delay);
                writer.Write(End);
            }

            writer.Write(Switch);

            foreach (var kvp in data.DataProvider.Data)
            {
                writer.Write(Start);
                writer.Write(kvp.Key);
                switch (kvp.Value)
                {
                case string value:
                    writer.Write('s');
                    writer.Write(value);
                    break;

                case int value:
                    writer.Write('i');
                    writer.Write(value);
                    break;

                case double value:
                    writer.Write('d');
                    writer.Write(value);
                    break;

                case bool value:
                    writer.Write('b');
                    writer.Write(value);
                    break;

                default:
                    Logging.WriteLine($"Found unserialisable value type of: {kvp.Value.GetType()}");
                    break;
                }
                writer.Write(End);
            }

            writer.Write(EoF);
        }
コード例 #8
0
ファイル: DataStoreTests.cs プロジェクト: codacy-badger/Janus
 private void Reset()
 {
     _data = new JanusData();
 }
コード例 #9
0
        public JanusData Read(BinaryReader reader)
        {
            var data      = new JanusData();
            var watchMode = true;
            var dataMode  = false;

            var startChar = reader.ReadChar();

            if (startChar != Start)
            {
                throw new Exception($"Invalid format. Start expected found: '{startChar}' instead");
            }

            while (watchMode)
            {
                var watchPath = reader.ReadString();
                var endPath   = reader.ReadString();
                reader.ReadString(); // filter - unused
                var recursive   = reader.ReadBoolean();
                var addFiles    = reader.ReadBoolean();
                var deleteFiles = reader.ReadBoolean();
                var endChar     = reader.ReadChar();

                if (endChar != End)
                {
                    throw new Exception($"Invalid format. End expected found: '{endChar}' instead");
                }

                var filters = new ObservableCollection <IFilter>();
                data.Watchers.Add(new Watcher(watchPath, watchPath, endPath, addFiles, deleteFiles, filters, recursive));

                var next = reader.ReadChar();

                if (next == Switch)
                {
                    watchMode = false;
                    dataMode  = true;
                }
                else if (next != Start)
                {
                    throw new Exception($"Invalid format. Start expected found: '{next}' instead");
                }
            }

            startChar = reader.ReadChar();

            if (startChar != Start)
            {
                if (startChar == EoF)
                {
                    return(data);
                }
                throw new Exception($"Invalid format. Start expected found: '{startChar}' instead");
            }

            while (dataMode)
            {
                var    key  = reader.ReadString();
                var    type = reader.ReadChar();
                object value;
                switch (type)
                {
                case 's':
                    value = reader.ReadString();
                    break;

                case 'i':
                    value = reader.ReadInt32();
                    break;

                case 'd':
                    value = reader.ReadDouble();
                    break;

                case 'b':
                    value = reader.ReadBoolean();
                    break;

                default:
                    throw new Exception($"Invalid format. Unknown DataType: '{type}' instead");
                }

                data.DataProvider.Add(key, value);

                var next = reader.ReadChar();

                if (next == EoF)
                {
                    dataMode = false;
                }
                else if (next != Start)
                {
                    throw new Exception($"Invalid format. Start expected found: '{next}' instead");
                }
            }

            return(data);
        }