public async Task Watch() { var storage = new Storaging.Storage(BasePath); storage.Delete("/watch"); IStorageDirectory sender = null; ItemChangedEventArgs evt = null; storage.Changed += (sdr,e)=> { sender = sdr;evt = e; }; IStorageItem item = null; int waitingCount = 10; //添加事件会有一些延迟。开个线程等着 Task task = System.Threading.Tasks.Task.Run(async () => { await Task.Delay(1000); item = storage.CreateItem("/watch"); }); await System.Threading.Tasks.Task.Run(async () => { while (sender == null && waitingCount > 0) { await Task.Delay(50); waitingCount--; } Assert.NotNull(sender); Assert.NotNull(evt); Assert.Equal(storage, sender); Assert.Equal(evt.ChangeKind, ChangeKinds.Created); Assert.Equal(item.FullName, evt.ChangedItem.FullName); }); //task.Start(); }
public void Relative() { var storage = new Storaging.Storage(BasePath); //storage 必须存在,如果没有目录就创建一个 //Storage must existed.If not , the construtor will create it Assert.True(storage.IsExisted); //写一个文件 //write text to a file storage.PutText("access/test.txt","hello"); //读取一个文件文本 //read text from a file var content = storage.GetText("access/test.txt"); Assert.Equal("hello", content); //获取Storage Item // Get a storage item var textItem = storage.GetItem("access/test.txt"); Assert.Equal(textItem.StorageType, StorageTypes.File); //Full name is the absolute path //FullName 是文件系统的全名 Assert.Equal(BasePath + "/access/test.txt", textItem.FullName); //Relative name is the name relate on the storage base path //相对名是相对Storage 的名字 Assert.Equal("/access/test.txt", textItem.RelativeName); Assert.Equal(textItem.Storage, storage); //Name is the name of this item (file name or directory name) //名字就文件名或目录名 Assert.Equal("test.txt", textItem.Name); Assert.Equal(textItem.Parent.RelativeName,"/access"); Assert.Equal(textItem.Parent.FullName,BasePath + "/access"); var subitem = textItem.Parent.CreateItem("sub/testdir"); Assert.Equal(subitem.StorageType , StorageTypes.Directory); Assert.Equal(subitem.FullName,BasePath + "/access/sub/testdir"); Assert.Equal(subitem.RelativeName,"/access/sub/testdir"); var accessItem = storage.GetItem("access") as IStorageDirectory; var list = accessItem.ListItems(false); Assert.Equal(2,list.Count); Assert.True(list[1].Equals(textItem)); var all = accessItem.ListItems(true); Assert.Equal(3,all.Count); Assert.Equal(all[0].RelativeName, "/access/sub"); Assert.Equal(all[1].RelativeName,"/access/sub/testdir"); Assert.Equal(all[2].RelativeName,"/access/test.txt"); }
public void Absolute() { var storage = new Storaging.Storage(BasePath); var sub = storage.CreateItem("abs") as IStorageDirectory; var sub1 = sub.GetItem("/abs"); Assert.Equal(sub.FullName,sub1.FullName); }
IDefinationRepository GetDefinationRepository(string type ,string connString) { var storage = new Storaging.Storage(connString); storage.Clear(); return new StorageDefinationRepository(storage); }