Example #1
0
        public void TestHALRoboRioMapsToNativeAssemblySymbols()
        {
            var halRoboRioSymbols = NetProjects.GetHALRoboRioNativeSymbols();

            var assembly = Assembly.GetExecutingAssembly();
            var ps       = Path.DirectorySeparatorChar;
            var path     = assembly.CodeBase.Replace("file:///", "").Replace("/", ps.ToString());

            path = Path.GetDirectoryName(path);


            // Start the child process.
            Process p = new Process();

            p.StartInfo.UseShellExecute        = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.FileName  = path + "\\..\\..\\HAL\\AthenaHAL\\Native\\frcnm.exe";
            p.StartInfo.Arguments = path + "\\..\\..\\HAL\\AthenaHAL\\Native\\libHALAthena.so";
            p.Start();
            string output = p.StandardOutput.ReadToEnd();

            p.WaitForExit();

            bool found = true;


            string[] nativeSymbols = output.Split('\r');

            foreach (var halSymbol in halRoboRioSymbols)
            {
                bool foundSymbol = nativeSymbols.Any(nativeSymbol => nativeSymbol.EndsWith(halSymbol));
                if (!foundSymbol)
                {
                    found = false;
                    Console.WriteLine(halSymbol);
                }
            }

            Assert.That(found);
        }