Files
2025-09-18 17:55:52 -04:00

711 lines
28 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Threading;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Runtime.InteropServices;
using System.Drawing;
using System.Reflection;
namespace Roblox.Test
{
[TestClass]
[Serializable]
public class PerfGraphics
{
Process proc;
public PerfGraphics()
{
proc = new Process();
}
/*public PerfGraphics(string DeploymentDir, TextWriter result)
{
TestDeploymentDir = DeploymentDir;
Result = result;
//
// TODO: Add constructor logic here
//
}*/
private TestContext testContextInstance;
/// <summary>
///Gets or sets the test context which provides
///information about and functionality for the current test run.
///</summary>
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}
private const string TestOutputDir = "S:\\Automation\\Results\\";
private const string RobloxAppBuildTypeConfigFile = "S:\\Automation\\Roblox\\bin\\dirs";
private string RobloxAppFilename;
private const string RobloxAppArgFormat = "/NonInteractive /Settings \"{0}\"";
private const string RobloxAppDefaultFilenameFormat = "S:\\Automation\\Roblox\\bin\\{0}\\RobloxApp.exe";
private string FindRobloxApp()
{
string publishbinrootenv = Environment.GetEnvironmentVariable("PublishedBinRoot");
List<string> searchPaths = new List<string>();
if (!String.IsNullOrEmpty(publishbinrootenv))
{
searchPaths.Add(Path.Combine(publishbinrootenv, "RobloxApp.exe"));
}
searchPaths.Add(Path.Combine(TestContext.TestDeploymentDir, "RobloxApp.exe"));
searchPaths.Add(Path.Combine(TestContext.TestDeploymentDir.Replace("Mixed Platforms", "Release"), "RobloxApp.exe"));
searchPaths.Add(Path.Combine(TestContext.TestDeploymentDir, "..\\..\\Win32\\Release\\RobloxApp.exe"));
foreach (var p in searchPaths)
{
if (File.Exists(p))
return p;
}
// default.
string flavor = "Release";
try
{
using (var sr = new StreamReader(RobloxAppBuildTypeConfigFile))
{
flavor = sr.ReadLine();
}
}
catch (FileNotFoundException)
{
}
return String.Format(RobloxAppDefaultFilenameFormat, flavor);
}
[TestInitialize()]
public void TestInitialize()
{
RobloxAppFilename = FindRobloxApp();
proc.StartInfo.FileName = RobloxAppFilename;
Process[] procs = System.Diagnostics.Process.GetProcessesByName("RobloxApp");
foreach (Process p in procs)
{
try
{
p.Kill();
}
catch
{
}
}
// register COM object.
string testdir = TestContext.TestDeploymentDir;
proc.StartInfo.Arguments = "/Register";
proc.Start();
proc.WaitForExit();
}
[TestCleanup()]
public void TestCleanup()
{
if (!proc.HasExited)
{
proc.Kill();
}
}
const uint ID_VIEW_FULLSCREEN = 33012;
const uint ID_VIEW_GAMELAYOUT = 33013;
const uint ID_IDE_RUN = 32966;
public enum RunMode
{
Static,
Run,
Visit
};
public class SecureWorkspace : RobloxLib.IWorkspace
{
RobloxLib.IWorkspace p;
ScriptSigner scriptSigner;
public SecureWorkspace(RobloxLib.IWorkspace ws)
{
p = ws;
scriptSigner = new ScriptSigner();
}
#region IWorkspace Members
public object[] ExecScript(string script, object arg1, object arg2, object arg3, object arg4)
{
return p.ExecScript(scriptSigner.SignScript(script), arg1, arg2, arg3, arg4);
}
public void Close()
{
p.Close();
}
public object[] ExecUrlScript(string url, object arg1, object arg2, object arg3, object arg4)
{
return p.ExecUrlScript(url, arg1, arg2, arg3, arg4);
}
public void Insert(string url)
{
p.Insert(url);
}
public void StartDrag(string url)
{
p.StartDrag(url);
}
public RobloxLib.Content Write()
{
return p.Write();
}
public RobloxLib.Content WriteSelection()
{
return p.WriteSelection();
}
#endregion
#region IWorkspace Members
public object[] GetPlayers()
{
throw new NotImplementedException();
}
public void JoinGame(string server, string port, string gameTicket)
{
throw new NotImplementedException();
}
public void ReportAbuse(int abuserId, string comment)
{
throw new NotImplementedException();
}
public void Save()
{
throw new NotImplementedException();
}
public void SaveUrl(string url)
{
throw new NotImplementedException();
}
#endregion
};
public void TestBasic(string settings, string place, RunMode runmode)
{
string testdir = TestContext.TestDeploymentDir;
string settingsdir = Path.Combine(Path.Combine(testdir,"TestFiles\\"),settings);
string placedir = Path.Combine(Path.Combine(testdir, "TestFiles\\"), place);
placedir = placedir.Replace("\\", "\\\\"); // double escape, for LUA scripting.
proc.StartInfo.Arguments = String.Format(RobloxAppArgFormat, settingsdir);
proc.Start();
proc.WaitForInputIdle();
HandleRef hr = new HandleRef(proc, proc.MainWindowHandle);
PlatformInvokeUSER32.PostMessage(hr, PlatformInvokeUSER32.WM_COMMAND, new IntPtr(ID_VIEW_GAMELAYOUT), IntPtr.Zero);
PlatformInvokeUSER32.ShowWindow(hr, PlatformInvokeUSER32.SW_SHOW);
PlatformInvokeUSER32.PostMessage(hr, PlatformInvokeUSER32.WM_COMMAND, new IntPtr(ID_VIEW_FULLSCREEN), IntPtr.Zero);
//PlatformInvokeUSER32.PostMessage(hr, PlatformInvokeUSER32.WM_ACTIVATE, new IntPtr(PlatformInvokeUSER32.WA_ACTIVE), IntPtr.Zero);
RobloxLib.IApp app = new RobloxLib.AppClass();
string statusmessage = "";
RobloxLib.IWorkspace workspace = null;
try
{
workspace = new SecureWorkspace(app.CreateGame("44340105256"));
}
catch (COMException comex)
{
if (comex.ErrorCode == unchecked ((int)0x80010105) /*RPC_E_SERVERFAULT*/)
{
//this is what you get when "Graphics fail to initialize".
//Unfortunately, it is rather difficult to know exactly at this point. there is too much catching/re-throwing.
TestContext.WriteLine("Graphics failed to initialize (maybe)");
return;
}
else
{
throw;
}
}
object[] ret = (object[])workspace.ExecScript("return settings().Diagnostics.RobloxVersion", null, null, null, null);
string rbxversion = (string)(ret[0]);
string testversion = Assembly.GetExecutingAssembly().GetName().Version.ToString();
ret = (object[])workspace.ExecScript("game:load('" + placedir + "')", null, null, null, null);
if (runmode == RunMode.Visit)
{
// throttling only turns on with a character present.
workspace.ExecUrlScript("http://www.watrbx.wtf/game/visit.ashx", null, null, null, null);
}
else if (runmode == RunMode.Run)
{
PlatformInvokeUSER32.PostMessage(hr, PlatformInvokeUSER32.WM_COMMAND, new IntPtr(ID_IDE_RUN), IntPtr.Zero);
}
bool bHasFrameRateManager = (bool)(((object[])workspace.ExecScript("if stats():FindFirstChild(\"FrameRateManager\") then return true else return false end", null, null, null, null))[0]) ;
int frameRateManagerBuckets = 0;
int secondsElapsed = 0;
double numFramesElapsed = 0;
do
{
ret = (object[])workspace.ExecScript("return stats().Render:FindFirstChild(\"3D CPU Total\"):getTimesForFrames(200)", null, null, null, null);
numFramesElapsed = (double)ret[2];
Thread.Sleep(1000);
//walk back and forth every 30 seconds.
if ((secondsElapsed++ % 10) == 0 && runmode == RunMode.Visit)
{
int posz = ((secondsElapsed / 10) % 3 == 0) ? 100 : 40;
int posx = ((secondsElapsed / 10) % 3 == 1) ? 40 : 0;
workspace.ExecScript("game.Workspace.Player.Humanoid:MoveTo(Vector3.new(" + posx.ToString() + ",0," + posz.ToString() + "), game.Workspace:FindFirstChild('Base'))", null, null, null, null); // throttling only turns on with a character present.
}
// framerate manager will turn on when # buckets exceeds 30.
if (bHasFrameRateManager && runmode == RunMode.Visit)
{
ret = (object[])workspace.ExecScript(
"stats().FrameRateManager:getValue()" +
"return stats().FrameRateManager.Buckets:getValue()"
, null, null, null, null);
frameRateManagerBuckets = (int)((double)ret[0]);
}
else
{
frameRateManagerBuckets = 30;
}
} while ( (frameRateManagerBuckets < 30) ||
(numFramesElapsed < 200 && secondsElapsed < 30));
if (runmode == RunMode.Visit)
{
// get the viewpoint we want to measure.
workspace.ExecScript("game.Workspace.CurrentCamera.CameraSubject = game.Workspace:FindFirstChild('Roof')", null, null, null, null);
}
// idle untill we get 100 frames of stable blockCounts from the FrameRateManager
secondsElapsed = 0;
ret[0] = 0.0;
while(bHasFrameRateManager && ((double)ret[0] < 100))
{
ret = (object[])workspace.ExecScript("return stats().FrameRateManager.StableFramesCounter:getValue()", null, null, null, null);
Thread.Sleep(1000);
if (secondsElapsed++ >= 120)
{
statusmessage += "Unable to reach FrameRateManager stability. ";
break;
}
};
// now do actual test.
int numFrames = 100;
ret = (object[])workspace.ExecScript("return stats().Render:FindFirstChild(\"3D CPU Total\"):getTimesForFrames(" + numFrames.ToString() + ")", null, null, null, null);
double walltime = (double)ret[0];
double sampletime = (double)ret[1];
double frames = (double)ret[2];
int visibleBlockCount = -1;
double constant = 0;
double visibleBlockCountEffect = 0;
//double estimatedFrameTime = 0;
if (bHasFrameRateManager)
{
// refresh values.
ret = (object[])workspace.ExecScript(
"stats().FrameRateManager:getValue()"
, null, null, null, null);
ret = (object[])workspace.ExecScript("return stats().FrameRateManager.X.visibleBlockCount:getValue()", null, null, null, null);
visibleBlockCount = (int)((double)ret[0]);
ret = (object[])workspace.ExecScript("return stats().FrameRateManager.EstimatedFrameTime:getValue() - stats().FrameRateManager.X.visibleBlockCount:getValue() * stats().FrameRateManager.Beta.visibleBlockCount:getValue()", null, null, null, null);
constant = (double)ret[0];
ret = (object[])workspace.ExecScript("return stats().FrameRateManager.Beta.visibleBlockCount:getValue()", null, null, null, null);
visibleBlockCountEffect = (double)ret[0];
}
//take screenshot.
Bitmap screen = CaptureScreen.GetDesktopImage();
screen.Save(Path.Combine(TestOutputDir, Environment.MachineName + ".PNG"));
TestContext.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}", testversion, rbxversion, frames / sampletime, walltime / frames, constant, visibleBlockCountEffect, visibleBlockCount, statusmessage);
//app.Quit();
bool result = proc.CloseMainWindow();
proc.WaitForExit(30000);
}
[TestMethod]
[DeploymentItem("TestFiles\\StarterHappyHome.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestStarterHappyHome()
{
TestBasic("SettingsOgreD3DRenderer.xml", "StarterHappyHome.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\house.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestBasicHouseOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer.xml", "house.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\house_slate.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer_NoFrameLimit.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestBasicHouseSlateOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer_NoFrameLimit.xml", "house_slate.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\house.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer_NoFrameLimit.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestBasicHousePlasticOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer_NoFrameLimit.xml", "house.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\house_wood.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer_NoFrameLimit.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestBasicHouseWoodOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer_NoFrameLimit.xml", "house_wood.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\house_rust.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer_NoFrameLimit.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestBasicHouseRustOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer_NoFrameLimit.xml", "house_rust.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\house_concrete.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer_NoFrameLimit.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestBasicHouseConcreteOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer_NoFrameLimit.xml", "house_concrete.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\walltester1.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer_NoFrameLimit.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void WallTester1OgreD3D()
{
TestBasic("SettingsOgreD3DRenderer_NoFrameLimit.xml", "walltester1.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\walltester2.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer_NoFrameLimit.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void WallTester2OgreD3D()
{
TestBasic("SettingsOgreD3DRenderer_NoFrameLimit.xml", "walltester2.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\Village.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer_NoFrameLimit.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void VillageOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer_NoFrameLimit.xml", "Village.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\Town2.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer_NoFrameLimit.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void Town2OgreD3D()
{
TestBasic("SettingsOgreD3DRenderer_NoFrameLimit.xml", "Town2.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\LAHouse.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer_NoFrameLimit.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void LAHouseOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer_NoFrameLimit.xml", "LAHouse.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\Place1.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer_NoFrameLimit.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void Place1OgreD3D()
{
TestBasic("SettingsOgreD3DRenderer_NoFrameLimit.xml", "Place1.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\ShipHotel.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer_NoFrameLimit.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void ShipHotelOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer_NoFrameLimit.xml", "ShipHotel.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\house_dplate.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer_NoFrameLimit.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestBasicHouseDPlateOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer_NoFrameLimit.xml", "house_dplate.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\house_aluminum.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer_NoFrameLimit.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestBasicHouseAluminumOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer_NoFrameLimit.xml", "house_aluminum.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\house_grass.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer_NoFrameLimit.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestBasicHouseGrassOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer_NoFrameLimit.xml", "house_grass.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\house_ice.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer_NoFrameLimit.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestBasicHouseIceOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer_NoFrameLimit.xml", "house_ice.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\house.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreGLRenderer.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestBasicHouseOgreGL()
{
TestBasic("SettingsOgreGLRenderer.xml", "house.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\house.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsG3DGLRenderer.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestBasicHouseG3DGL()
{
TestBasic("SettingsG3DGLRenderer.xml", "house.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\house.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsDefaultRenderer.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestBasicHouseDefault()
{
TestBasic("SettingsDefaultRenderer.xml", "house.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\Hotels.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestFRMHotelsOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer.xml", "Hotels.rbxl", RunMode.Visit);
}
[TestMethod]
[DeploymentItem("TestFiles\\Hotels.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestBasicHotelsOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer.xml", "Hotels.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\CrossroadsPlastic.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\LowOgreD3DBench.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void RegressCrossroadsOgreD3D()
{
TestBasic("LowOgreD3DBench.xml", "CrossroadsPlastic.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\CrossroadsPlastic.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\LowG3DGLBench.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void RegressCrossroadsG3DGL()
{
TestBasic("LowG3DGLBench.xml", "CrossroadsPlastic.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\CrossroadsPlastic.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestCrossroadsPlasticOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer.xml", "CrossroadsPlastic.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\CrossroadsWood.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestCrossroadsWoodOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer.xml", "CrossroadsWood.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\CrossroadsSlate.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestCrossroadsSlateOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer.xml", "CrossroadsSlate.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\CrossroadsMixed.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestCrossroadsMixedOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer.xml", "CrossroadsMixed.rbxl", RunMode.Run);
}
[TestMethod]
[DeploymentItem("TestFiles\\CrossroadsMixed.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreGLRenderer.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestCrossroadsMixedOgreGL()
{
TestBasic("SettingsOgreGLRenderer.xml", "CrossroadsMixed.rbxl", RunMode.Run);
}
[TestMethod]
[DeploymentItem("TestFiles\\WoodenHouse.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestBasicWoodenHouseOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer.xml", "WoodenHouse.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\TrussStress.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsOgreD3DRenderer.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestBasicTrussOgreD3D()
{
TestBasic("SettingsOgreD3DRenderer.xml", "TrussStress.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\TrussStress.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\SettingsG3DGLRenderer.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void TestBasicTrussG3DGL()
{
TestBasic("SettingsG3DGLRenderer.xml", "TrussStress.rbxl", RunMode.Static);
}
[TestMethod]
[DeploymentItem("TestFiles\\8TowersHardMixed.rbxl", "TestFiles\\")]
[DeploymentItem("TestFiles\\OgreD3DXBricks.xml", "TestFiles\\")]
[HeaderString("testver\trbxver\tfps\tgfxtime_ms\tfrm_constant\tfrm_blockcost\tvisibleBlocks\tstatus")]
public void Test8TowersHardMixed()
{
TestBasic("OgreD3DXBricks.xml", "8TowersHardMixed.rbxl", RunMode.Run);
}
}
}