public void SerializedResourceLibraryRoundtrip() { var expected = Guid.NewGuid().ToString(); var expectedResource = new GenericNativeResource <string>(expected); var resourceUri = ResourcesHelper.NewTestResourceUri(expectedResource.Id); ResourceManager.RegisterResourceLoader(ResourcesHelper.TestResourceLoader <string>(id => expectedResource)); var library = new ResourceLibrary(); var resource = library.GetResourceByUri <GenericNativeResource <string> >(resourceUri); Assert.IsNotNull(resource); Assert.AreEqual(expected, resource.NativeResource); var libraryXml = Encoding.UTF8.GetString(library.ToBytes()); Assert.IsFalse(string.IsNullOrEmpty(libraryXml)); var savedLibrary = ResourceLibrary.FromBytes(Encoding.UTF8.GetBytes(libraryXml)); Assert.IsNotNull(savedLibrary); var resourceById = savedLibrary.GetResource <GenericNativeResource <string> >(expectedResource.Id); var resourceByUri = savedLibrary.GetResourceByUri <GenericNativeResource <string> >(resourceUri); Assert.AreSame(resourceById, resourceByUri); Assert.AreEqual(expected, resourceById.NativeResource); }
public void ResourceLibraryDisposesNativeResources() { var disposable = MockRepository.GenerateMock <INativeResource>(); disposable.Stub(f => f.Id).Return(Guid.NewGuid().ToString()); var disposableUri = ResourcesHelper.NewTestResourceUri(disposable.Id); var nondisposable = MockRepository.GenerateMock <IResource>(); nondisposable.Stub(f => f.Id).Return(Guid.NewGuid().ToString()); var nondisposableUri = ResourcesHelper.NewTestResourceUri(nondisposable.Id); ResourcesHelper.GenerateResourceLoaderMock(true, disposable, nondisposable); using (var library = new ResourceLibrary()) { Assert.IsNotNull(library.GetResourceByUri <IResource>(disposableUri)); Assert.IsNotNull(library.GetResourceByUri <IResource>(nondisposableUri)); } disposable.AssertWasCalled(f => f.Dispose()); }