Example #1
0
        public void TestEmMaxWebGlVersion()
        {
            var obj = new EmscriptenTask.EmLink
            {
                EmMaxWebGlVersion = ""
            };
            var result1 = WriteSwitchesToString(obj);

            Assert.AreEqual(string.Empty, result1);

            obj.EmMaxWebGlVersion = "-1";
            var result2 = WriteSwitchesToString(obj);

            Assert.AreEqual(string.Empty, result2);

            obj.EmMaxWebGlVersion = "3";
            var result3 = WriteSwitchesToString(obj);

            Assert.AreEqual(string.Empty, result3);

            obj.EmMaxWebGlVersion = " 1";
            var result4 = WriteSwitchesToString(obj);

            Assert.AreEqual(" -s MAX_WEBGL_VERSION=1", result4);

            obj.EmMaxWebGlVersion = " 2              ";
            var result5 = WriteSwitchesToString(obj);

            Assert.AreEqual(" -s MAX_WEBGL_VERSION=2", result5);
        }
Example #2
0
        public void TestEmTestStackOverflow()
        {
            var obj = new EmscriptenTask.EmLink
            {
                EmTestStackOverflow = null
            };
            var result1 = WriteSwitchesToString(obj);

            Assert.AreEqual(string.Empty, result1);

            obj.EmTestStackOverflow = "Disabled";
            var result2 = WriteSwitchesToString(obj);

            Assert.AreEqual(" -s STACK_OVERFLOW_CHECK=0", result2);

            obj.EmTestStackOverflow = "SecurityCookie";
            var result3 = WriteSwitchesToString(obj);

            Assert.AreEqual(" -s STACK_OVERFLOW_CHECK=1", result3);

            obj.EmTestStackOverflow = "Binaryen";
            var result4 = WriteSwitchesToString(obj);

            Assert.AreEqual(" -s STACK_OVERFLOW_CHECK=2", result4);
        }
Example #3
0
        public void TestDefaults()
        {
            var obj = new EmscriptenTask.EmLink();

            // EmTask Settings
            Assert.AreEqual(null, obj.BuildEngine);
            Assert.AreEqual(null, obj.HostObject);
            Assert.AreEqual(null, obj.TrackerLogDirectory);
            Assert.AreNotEqual(null, obj.TLogReadFiles);
            Assert.AreNotEqual(null, obj.TLogWriteFiles);
            Assert.AreEqual(@"EmLink.read.1.tlog", obj.TLogReadFiles[0].ItemSpec);
            Assert.AreEqual(@"EmLink.write.1.tlog", obj.TLogWriteFiles[0].ItemSpec);
            Assert.AreEqual(null, obj.Sources);
            Assert.AreEqual(true, obj.MinimalRebuildFromTracking);
            Assert.AreEqual(null, obj.DebugProp1);
            Assert.AreEqual(null, obj.DebugProp2);
            Assert.AreEqual(false, obj.DebugProp3);
            Assert.AreEqual(false, obj.SkippedExecution);
            Assert.AreEqual(false, obj.Verbose);
            Assert.AreEqual(false, obj.EchoCommandLines);
            Assert.AreEqual(null, obj.AllSource);

            // Points to static data, so it's dependent on the whole test set
            // and is valid only if ValidateSdk is called. It's not public, so...
            if (obj.EmscriptenDirectory != null)
            {
                Assert.IsTrue(obj.EmscriptenDirectory.Contains(@"\upstream\emscripten"));
            }
            if (obj.EmccTool != null)
            {
                Assert.IsTrue(obj.EmccTool.EndsWith("emcc.bat"));
            }

            Assert.AreEqual(null, obj.ConfigurationType);
            Assert.AreEqual(null, obj.OutputFile);
            Assert.AreEqual(null, obj.AdditionalDependencies);
            Assert.AreEqual(null, obj.AdditionalLibraryDirectories);
            Assert.AreEqual(null, obj.AdditionalOptions);
            Assert.AreEqual(null, obj.EmWasmMode);

            Assert.AreEqual(null, obj.EmSdlVersion);
            Assert.AreEqual(false, obj.EmUseFullOpenGles2);
            Assert.AreEqual(false, obj.EmUseFullOpenGles3);
            Assert.AreEqual(null, obj.EmMinWebGlVersion);
            Assert.AreEqual(null, obj.EmMaxWebGlVersion);
            Assert.AreEqual(null, obj.EmPreloadFile);
            Assert.AreEqual(null, obj.EmEmbeddedFile);

            Assert.AreEqual(null, obj.EmAssertions);
            Assert.AreEqual(null, obj.EmTestStackOverflow);
            Assert.AreEqual(false, obj.EmRuntimeLogging);

            Assert.AreEqual(false, obj.EmVerbose);
            Assert.AreEqual(false, obj.EmAllowMemoryGrowth);
            Assert.AreEqual(0, obj.EmInitialMemory);
            Assert.AreEqual(false, obj.EmUseUBSan);
            Assert.AreEqual(false, obj.EmUseASan);
        }
Example #4
0
        public void TestEmUseASan()
        {
            var obj = new EmscriptenTask.EmLink
            {
                EmUseASan = false
            };
            var result1 = WriteSwitchesToString(obj);

            Assert.AreEqual(string.Empty, result1);

            obj.EmUseASan = true;
            var result4 = WriteSwitchesToString(obj);

            Assert.AreEqual(" -fsanitize=address", result4);
        }
Example #5
0
        public void TestEmAllowMemoryGrowth()
        {
            var obj = new EmscriptenTask.EmLink
            {
                EmAllowMemoryGrowth = false
            };
            var result1 = WriteSwitchesToString(obj);

            Assert.AreEqual(string.Empty, result1);

            obj.EmAllowMemoryGrowth = true;
            var result4 = WriteSwitchesToString(obj);

            Assert.AreEqual(" -s ALLOW_MEMORY_GROWTH=1", result4);
        }
Example #6
0
        public void TestEmVerbose()
        {
            var obj = new EmscriptenTask.EmLink
            {
                EmVerbose = false
            };
            var result1 = WriteSwitchesToString(obj);

            Assert.AreEqual(string.Empty, result1);

            obj.EmVerbose = true;
            var result4 = WriteSwitchesToString(obj);

            Assert.AreEqual(" -s VERBOSE=1", result4);
        }
Example #7
0
        public void TestEmRuntimeLogging()
        {
            var obj = new EmscriptenTask.EmLink
            {
                EmRuntimeLogging = false
            };
            var result1 = WriteSwitchesToString(obj);

            Assert.AreEqual(string.Empty, result1);

            obj.EmRuntimeLogging = true;
            var result4 = WriteSwitchesToString(obj);

            Assert.AreEqual(" -s RUNTIME_LOGGING=1", result4);
        }
Example #8
0
        public void TestEmEmbeddedFile()
        {
            var obj = new EmscriptenTask.EmLink
            {
                EmEmbeddedFile = "Foo.Bar"
            };
            var result1 = WriteSwitchesToString(obj);

            Assert.AreEqual(" --embed-file Foo.Bar", result1);

            obj.EmEmbeddedFile = $@"{CurrentDirectory}\Tests\New Folder\New Text Document.c";
            var result2 = WriteSwitchesToString(obj);

            Assert.AreEqual($" --embed-file \"{CurrentDirectory}\\Tests\\New Folder\\New Text Document.c\"", result2);
        }
Example #9
0
        public void TestEmUseFullOpenGles3()
        {
            var obj = new EmscriptenTask.EmLink
            {
                EmUseFullOpenGles3 = false
            };
            var result1 = WriteSwitchesToString(obj);

            Assert.AreEqual(string.Empty, result1);

            obj.EmUseFullOpenGles3 = true;
            var result4 = WriteSwitchesToString(obj);

            Assert.AreEqual(" -s FULL_ES3=1", result4);
        }
Example #10
0
        public void TestOutputFileSwitch()
        {
            var obj = new EmscriptenTask.EmLink {
                OutputFile = new TaskItem("ABC.wasm")
            };

            var result      = WriteSwitchesToString(obj);
            var mockFileLoc = Environment.CurrentDirectory;

            Assert.AreEqual($@" -o {mockFileLoc}\ABC.wasm", result);
            obj.OutputFile = new TaskItem("Z:/Some Space / Separated Drive/A B C.wasm");

            var result1 = WriteSwitchesToString(obj);

            Assert.AreEqual(" -o \"Z:\\Some Space \\ Separated Drive\\A B C.wasm\"", result1);
        }
Example #11
0
        public void TestTrackerLogDirectory()
        {
            var obj = new EmscriptenTask.EmLink {
                TrackerLogDirectory = "/Some/Path/To/The/Log/Files"
            };

            Assert.AreEqual(@"\Some\Path\To\The\Log\Files\EmLink.read.1.tlog", obj.TLogReadFiles[0].ItemSpec);
            Assert.AreEqual(@"\Some\Path\To\The\Log\Files\EmLink.write.1.tlog", obj.TLogWriteFiles[0].ItemSpec);

            obj.TrackerLogDirectory = null;
            Assert.AreEqual(@"EmLink.read.1.tlog", obj.TLogReadFiles[0].ItemSpec);
            Assert.AreEqual(@"EmLink.write.1.tlog", obj.TLogWriteFiles[0].ItemSpec);

            obj.TrackerLogDirectory = "A n o t h e r/ p a t h";

            Assert.AreEqual(@"A n o t h e r\ p a t h\EmLink.read.1.tlog", obj.TLogReadFiles[0].ItemSpec);
            Assert.AreEqual(@"A n o t h e r\ p a t h\EmLink.write.1.tlog", obj.TLogWriteFiles[0].ItemSpec);
        }
Example #12
0
        public void TestAdditionalLibraryDirectories()
        {
            var obj = new EmscriptenTask.EmLink {
                AdditionalLibraryDirectories = "A/Non/Existing/Dependency/New Folder"
            };

            var result = WriteSwitchesToString(obj);

            // AdditionalLibraryDirectories has the validate argument
            // set to true. So the expected behavior is to
            // skip it if the file does not exist.
            Assert.AreEqual(string.Empty, result);

            var curDir = Environment.CurrentDirectory;

            obj.AdditionalLibraryDirectories = $@"{curDir}\..\..\New Folder";
            var expected = $" -L \"{curDir}\\..\\..\\New Folder\"";

            var result2 = WriteSwitchesToString(obj);

            Assert.IsTrue(expected.Equals(result2));
        }
Example #13
0
        public void TestAdditionalDependenciesSwitch()
        {
            var obj = new EmscriptenTask.EmLink {
                AdditionalDependencies = "ANonExistingDependency.a"
            };

            var result = WriteSwitchesToString(obj);

            // AdditionalDependencies has the validate argument
            // set to true. So the expected behavior is to
            // skip it if the file does not exist.
            Assert.AreEqual(string.Empty, result);

            var curDir = Environment.CurrentDirectory;

            obj.AdditionalDependencies = $@"{curDir}\..\..\TestEmLink.cs";
            var expected = $@" {curDir}\..\..\TestEmLink.cs";

            var result2 = WriteSwitchesToString(obj);

            Assert.IsTrue(expected.Equals(result2));
        }
Example #14
0
        public void TestSources()
        {
            var obj = new EmscriptenTask.EmLink {
                Sources = ItemsFromString("a.o;b.o")
            };

            Assert.AreNotEqual(null, obj.Sources);
            Assert.AreEqual(2, obj.Sources.Length);
            Assert.AreEqual("a.o", obj.Sources[0].ItemSpec);
            Assert.AreEqual(15, obj.Sources[0].MetadataCount);

            var mockFileLoc = Environment.CurrentDirectory;
            var driveRoot   = $"{Path.GetPathRoot(mockFileLoc)}";

            Assert.AreNotEqual(null, obj.Sources[0].MetadataNames);
            Assert.AreEqual($@"{mockFileLoc}\a.o", obj.Sources[0].GetMetadata("FullPath"));
            Assert.AreEqual($@"{driveRoot}", obj.Sources[0].GetMetadata("RootDir"));
            Assert.AreEqual("a", obj.Sources[0].GetMetadata("Filename"));
            Assert.AreEqual(".o", obj.Sources[0].GetMetadata("Extension"));
            Assert.AreEqual("", obj.Sources[0].GetMetadata("RelativeDir"));
            Assert.AreEqual($"{mockFileLoc.Replace(driveRoot, "")}\\", obj.Sources[0].GetMetadata("Directory"));
        }
Example #15
0
        public void TestEmInitialMemory()
        {
            var obj = new EmscriptenTask.EmLink
            {
                EmInitialMemory = 0
            };
            var result1 = WriteSwitchesToString(obj);

            Assert.AreEqual(string.Empty, result1);

            int v = int.MaxValue >> 1;

            obj.EmInitialMemory = v;
            var result4 = WriteSwitchesToString(obj);

            Assert.AreEqual($" -s INITIAL_MEMORY={v}", result4);

            int v1 = -1;

            obj.EmInitialMemory = v1;
            var result2 = WriteSwitchesToString(obj);

            Assert.AreEqual($" -s INITIAL_MEMORY={v1}", result2);
        }
Example #16
0
        public void TestEmWasmMode()
        {
            var obj = new EmscriptenTask.EmLink {
                EmWasmMode = "EmWasmOnlyJS"
            };
            var result1 = WriteSwitchesToString(obj);

            Assert.AreEqual(" -s WASM=0", result1);

            obj.EmWasmMode = "EmWasmOnlyWasm";
            var result2 = WriteSwitchesToString(obj);

            Assert.AreEqual(" -s WASM=1", result2);

            obj.EmWasmMode = "EmWasmBoth";
            var result3 = WriteSwitchesToString(obj);

            Assert.AreEqual(" -s WASM=2", result3);

            obj.EmWasmMode = "Anything Else Uses The Default";
            var result4 = WriteSwitchesToString(obj);

            Assert.AreEqual(" -s WASM=1", result4);
        }