예제 #1
0
        async Task ExecuteLoadCrossDbItemCommand(string requestedItems)
        {
            string[] uriParts = requestedItems.Split('?');
            //PropertyInfo itemsPickerEnabled = (PropertyInfo) GetType().GetRuntimeProperty(string.Format("Is{0}Enabled", uriParts[0]));
            PropertyInfo itemsPickerEnabled = (PropertyInfo)GetType().GetRuntimeProperty("IsItemsEnabled");
            PropertyInfo itemsNode          = (PropertyInfo)GetType().GetRuntimeProperty(uriParts[0]);
            var          crossDbItems       = new List <CrossDbItemTypes>();// = (List<CrossDbItemTypes>)GetType().GetRuntimeProperty(requestedItems).GetValue(this);

            itemsPickerEnabled.SetValue(this, true);

            try
            {
                crossDbItems.Clear();
                var items = await Cdb.GetCrossDbItem(requestedItems);

                foreach (var item in items)
                {
                    crossDbItems.Add(item);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
            finally
            {
                itemsNode.SetValue(this, crossDbItems);
                itemsPickerEnabled.SetValue(this, false);
            }
        }
예제 #2
0
파일: CdbTest.cs 프로젝트: ujr/csutils
        public void CanCreateAndGet()
        {
            var r1 = CreateRecord("key", "data");
            var r2 = CreateRecord("foo", "Bar");
            var r3 = CreateRecord("foo", "Quux");      // same key
            var r4 = CreateRecord("", "");             // empty key and data

            string filePath = Path.GetTempFileName();  // create empty file

            CreateCdb(filePath, r1, r2, r3, r4);

            Assert.Equal(r1.Data, Cdb.Get(filePath, r1.Key));

            var list = new List <byte[]>();

            list.Add(Cdb.Get(filePath, r2.Key));
            list.Add(Cdb.Get(filePath, r2.Key, 1));
            Assert.Null(Cdb.Get(filePath, r2.Key, 2));
            Assert.Null(Cdb.Get(filePath, r2.Key, 99));
            Assert.Contains(r2.Data, list);
            Assert.Contains(r3.Data, list);

            Assert.Equal(r4.Data, Cdb.Get(filePath, r4.Key));

            Assert.Null(Cdb.Get(filePath, Encoding.UTF8.GetBytes("NoSuchKey")));

            File.Delete(filePath);
        }
예제 #3
0
파일: CdbTest.cs 프로젝트: ujr/csutils
        public void CanCreateAndQuery()
        {
            var r1 = CreateRecord("key", "data");
            var r2 = CreateRecord("foo", "Bar");
            var r3 = CreateRecord("foo", "Quux");      // same key
            var r4 = CreateRecord("", "");             // empty key and data

            string filePath = Path.GetTempFileName();  // create empty file

            CreateCdb(filePath, r1, r2, r3, r4);

            var cdb = Cdb.Open(filePath);

            Assert.Equal(r1.Data, cdb.Find(r1.Key));

            cdb.FindStart();
            var d23 = new[] { cdb.FindNext(r2.Key), cdb.FindNext(r2.Key) };

            Assert.Null(cdb.FindNext(r2.Key));
            Assert.Contains(r2.Data, d23);
            Assert.Contains(r3.Data, d23);

            Assert.Equal(r4.Data, cdb.Find(r4.Key));

            Assert.Null(cdb.Find(Encoding.UTF8.GetBytes("NoSuchKey")));

            cdb.Close();

            File.Delete(filePath);
        }
예제 #4
0
파일: CdbTest.cs 프로젝트: ujr/csutils
        public void CanHash()
        {
            var empty = new byte[0];

            Assert.Equal(5381U, Cdb.Hash(empty));
            var key  = Encoding.UTF8.GetBytes("abc");
            var hash = Cdb.Hash(key);

            Assert.Equal(193409669U, hash);
        }
예제 #5
0
파일: CdbTest.cs 프로젝트: ujr/csutils
        public void CanCreateAndDump()
        {
            int count = 5;            //100;
            var array = GenerateRandomPairs(count).ToArray();

            string filePath = Path.GetTempFileName();             // create empty file

            CreateCdb(filePath, array);

            var records = Cdb.Dump(filePath);

            Assert.Equal(array.Select(RecordToString).OrderBy(s => s),
                         records.Select(RecordToString).OrderBy(s => s));

            File.Delete(filePath);
        }
예제 #6
0
파일: CdbTest.cs 프로젝트: ujr/csutils
        public void CanFindAll()
        {
            int count = 10000;
            var array = GenerateRandomPairs(count).Distinct(new RecordKeyEquality()).ToArray();

            string filePath = Path.GetTempFileName();             // create empty file

            CreateCdb(filePath, array);

            using (var cdb = Cdb.Open(filePath))
            {
                foreach (var pair in array)
                {
                    var data = cdb.Find(pair.Key);

                    Assert.NotNull(data);
                    Assert.Equal(pair.Data, data);
                }
            }
        }
예제 #7
0
파일: CdbTest.cs 프로젝트: ujr/csutils
        public void CanMakeFromText()
        {
            const string text = "+3,4:key->data\n"
                                + "+3,3:foo->bar\n"
                                + "+3,4:foo->Quux\n"
                                + "+0,0:->\n";

            var    reader   = new StringReader(text);
            string filePath = Path.GetTempFileName();             // create empty file

            Cdb.Make(reader, filePath);

            var records = Cdb.Dump(filePath).ToList();

            var comparer = new RecordKeyEquality();

            Assert.Contains(CreateRecord("key", "data"), records, comparer);
            Assert.Contains(CreateRecord("foo", "Bar"), records, comparer);
            Assert.Contains(CreateRecord("foo", "Quux"), records, comparer);
            Assert.Contains(CreateRecord("", ""), records, comparer);

            File.Delete(filePath);
        }
예제 #8
0
파일: CdbTest.cs 프로젝트: ujr/csutils
 private static void CreateCdb(string cdbFilePath, params Cdb.Record[] records)
 {
     Cdb.Make(records, cdbFilePath);
 }
예제 #9
0
 async Task GetCrossDbLastUpdateTime()
 {
     Wservice.LastUpdateTime = await Cdb.GetCrossDbLastUpdateTime();
 }