public void SetMetaTest()
        {
            var manager = new HybridResourceManager(GetType());

            // not existing base: missing manifest exception
            Throws <MissingManifestResourceException>(() => manager.GetMetaObject("unknown"));

            // setting something without culture sets the invariant language so there is no exception anymore
            manager.SetMetaObject("StringValue", "String invariant");
            Assert.IsNotNull(manager.GetMetaObject("StringValue"));
            Assert.IsNull(manager.GetMetaObject("unknown"));

            // this creates a derived en resource set
            manager.SetMetaObject("enOnly", 42, en);

            // however, there is no resource fallback for metadata
            Assert.IsNull(manager.GetMetaObject("StringValue", en));

            // in compiled mode any set operation throws InvalidOperationException and the changes disappear
            manager.Source = ResourceManagerSources.CompiledOnly;
            Throws <InvalidOperationException>(() => manager.SetMetaObject("SetTest", "does not work"));
            Assert.IsFalse(manager.IsModified);
            Assert.IsNull(manager.GetMetaString("StringValue"));

            // is we change to non-compiled mode, changes re-appear
            manager.Source = ResourceManagerSources.ResXOnly;
            Assert.IsTrue(manager.IsModified);
            Assert.IsNotNull(manager.GetMetaString("StringValue"));
        }
        public void GetMetaStringTest()
        {
            var manager = new HybridResourceManager("KGySoft.CoreLibraries.Resources.TestCompiledResource", GetType().Assembly, resXBaseName);
            var resName = "TestString";

            manager.Source = ResourceManagerSources.CompiledAndResX;
            var hybrid = manager.GetMetaString(resName, inv);

            manager.ReleaseAllResources();
            manager.Source = ResourceManagerSources.CompiledOnly;
            var compiled = manager.GetMetaString(resName, inv);

            manager.ReleaseAllResources();
            manager.Source = ResourceManagerSources.ResXOnly;
            var resx = manager.GetMetaString(resName, inv);

            // meta exists only in non-compiled resources
            Assert.IsNotNull(hybrid);
            Assert.IsNotNull(resx);
            Assert.IsNull(compiled);

            manager.Source = ResourceManagerSources.CompiledAndResX;
            hybrid         = manager.GetMetaString(resName, en);

            manager.ReleaseAllResources();
            manager.Source = ResourceManagerSources.CompiledOnly;
            compiled       = manager.GetMetaString(resName, en);

            manager.ReleaseAllResources();
            manager.Source = ResourceManagerSources.ResXOnly;
            resx           = manager.GetMetaString(resName, en);

            // there is no fallback for meta
            Assert.IsNull(hybrid);
            Assert.IsNull(resx);
            Assert.IsNull(compiled);
        }