368 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			368 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | //#define ENABLE_TEST_SROPTIONS | |||
|  | 
 | |||
|  | using System; | |||
|  | using System.ComponentModel; | |||
|  | using System.Diagnostics; | |||
|  | using SRDebugger; | |||
|  | using SRDebugger.Services; | |||
|  | using SRF; | |||
|  | using SRF.Service; | |||
|  | using Debug = UnityEngine.Debug; | |||
|  | using Random = UnityEngine.Random; | |||
|  | 
 | |||
|  | public partial class SROptions | |||
|  | { | |||
|  |     // Uncomment the #define at the top of file to enable test options | |||
|  | 
 | |||
|  | #if ENABLE_TEST_SROPTIONS | |||
|  | 
 | |||
|  |     public enum TestValues | |||
|  |     { | |||
|  |         TestValue1, | |||
|  |         TestValue2, | |||
|  |         TestValue3LongerThisTime | |||
|  |     } | |||
|  | 
 | |||
|  |     private bool _testBoolean = true; | |||
|  |     private string _testString = "Test String Value"; | |||
|  |     private short _testShort = -10; | |||
|  |     private byte _testByte = 2; | |||
|  |     private int _testInt = 30000; | |||
|  |     private double _testDouble = 406002020d; | |||
|  |     private float _testFloat = 0.1f; | |||
|  |     private sbyte _testSByte = -10; | |||
|  |     private uint _testUInt = 32450; | |||
|  |     private TestValues _testEnum; | |||
|  |     private float _test01Range; | |||
|  |     private float _testFractionIncrement; | |||
|  |     private int _testLargeIncrement; | |||
|  | 
 | |||
|  |     [Category("Test")] | |||
|  |     public float TestFloat | |||
|  |     { | |||
|  |         get { return _testFloat; } | |||
|  |         set | |||
|  |         { | |||
|  |             OnValueChanged("TestFloat", value); | |||
|  |             _testFloat = value; | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Test")] | |||
|  |     public double TestDouble | |||
|  |     { | |||
|  |         get { return _testDouble; } | |||
|  |         set | |||
|  |         { | |||
|  |             OnValueChanged("TestDouble", value); | |||
|  |             _testDouble = value; | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Test")] | |||
|  |     public int TestInt | |||
|  |     { | |||
|  |         get { return _testInt; } | |||
|  |         set | |||
|  |         { | |||
|  |             OnValueChanged("TestInt", value); | |||
|  |             _testInt = value; | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Test")] | |||
|  |     public byte TestByte | |||
|  |     { | |||
|  |         get { return _testByte; } | |||
|  |         set | |||
|  |         { | |||
|  |             OnValueChanged("TestByte", value); | |||
|  |             _testByte = value; | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Test")] | |||
|  |     public short TestShort | |||
|  |     { | |||
|  |         get { return _testShort; } | |||
|  |         set | |||
|  |         { | |||
|  |             OnValueChanged("TestShort", value); | |||
|  |             _testShort = value; | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Test")] | |||
|  |     public string TestString | |||
|  |     { | |||
|  |         get { return _testString; } | |||
|  |         set | |||
|  |         { | |||
|  |             OnValueChanged("TestString", value); | |||
|  |             _testString = value; | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Test")] | |||
|  |     public bool TestBoolean | |||
|  |     { | |||
|  |         get { return _testBoolean; } | |||
|  |         set | |||
|  |         { | |||
|  |             OnValueChanged("TestBoolean", value); | |||
|  |             _testBoolean = value; | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Test")] | |||
|  |     public TestValues TestEnum | |||
|  |     { | |||
|  |         get { return _testEnum; } | |||
|  |         set | |||
|  |         { | |||
|  |             OnValueChanged("TestEnum", value); | |||
|  |             _testEnum = value; | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Test")] | |||
|  |     public sbyte TestSByte | |||
|  |     { | |||
|  |         get { return _testSByte; } | |||
|  |         set | |||
|  |         { | |||
|  |             OnValueChanged("TestSByte", value); | |||
|  |             _testSByte = value; | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Test")] | |||
|  |     public uint TestUInt | |||
|  |     { | |||
|  |         get { return _testUInt; } | |||
|  |         set | |||
|  |         { | |||
|  |             OnValueChanged("TestUInt", value); | |||
|  |             _testUInt = value; | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Test")] | |||
|  |     [NumberRange(0, 1)] | |||
|  |     public float Test01Range | |||
|  |     { | |||
|  |         get { return _test01Range; } | |||
|  |         set | |||
|  |         { | |||
|  |             OnValueChanged("Test01Range", value); | |||
|  |             _test01Range = value; | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Test")] | |||
|  |     [Increment(0.2)] | |||
|  |     public float TestFractionIncrement | |||
|  |     { | |||
|  |         get { return _testFractionIncrement; } | |||
|  |         set | |||
|  |         { | |||
|  |             OnValueChanged("TestFractionIncrement", value); | |||
|  |             _testFractionIncrement = value; | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Test")] | |||
|  |     [Increment(25)] | |||
|  |     public int TestLargeIncrement | |||
|  |     { | |||
|  |         get { return _testLargeIncrement; } | |||
|  |         set | |||
|  |         { | |||
|  |             OnValueChanged("TestLargeIncrement", value); | |||
|  |             _testLargeIncrement = value; | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Test")] | |||
|  |     public void TestAction() | |||
|  |     { | |||
|  |         Debug.Log("[SRDebug] TestAction() invoked"); | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Test"), DisplayName("Test Action Renamed")] | |||
|  |     public void TestRenamedAction() | |||
|  |     { | |||
|  |         Debug.Log("[SRDebug] TestRenamedAction() invoked"); | |||
|  |     } | |||
|  | 
 | |||
|  |     private void OnValueChanged(string n, object newValue) | |||
|  |     { | |||
|  |         Debug.Log("[SRDebug] {0} value changed to {1}".Fmt(n, newValue)); | |||
|  |         OnPropertyChanged(n); | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("SRDebugger")] | |||
|  |     public PinAlignment TriggerPosition | |||
|  |     { | |||
|  |         get { return SRServiceManager.GetService<IDebugTriggerService>().Position; } | |||
|  |         set { SRServiceManager.GetService<IDebugTriggerService>().Position = value; } | |||
|  |     } | |||
|  | 
 | |||
|  |     private static readonly string[] SampleLogs = | |||
|  |     { | |||
|  |         "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", | |||
|  |         "Mauris id mauris interdum tellus luctus posuere.", | |||
|  |         "Donec eget velit nec risus bibendum condimentum ut in velit.", | |||
|  |         "Aenean et augue non eros interdum fringilla.", | |||
|  |         "Nam vulputate justo quis nulla ultricies placerat.", | |||
|  |         "Etiam id libero sed quam elementum suscipit.", | |||
|  |         "Nulla sollicitudin purus nec mauris congue tincidunt.", | |||
|  |         "Nam sit amet neque vestibulum, vehicula lorem sed, ultricies dui.", | |||
|  |         "Aenean a eros fringilla, luctus est et, bibendum lorem.", | |||
|  |         "Integer bibendum metus in lectus finibus sagittis.", | |||
|  |         "Quisque a lacus ac massa interdum sagittis nec id sapien.", | |||
|  |         "Phasellus a ipsum volutpat, lobortis velit eu, consectetur nunc.", | |||
|  |         "Nulla elementum justo malesuada lacus mollis lobortis.", | |||
|  |         "Nullam sodales nisi vitae tortor lacinia, in pulvinar mauris accumsan.", | |||
|  |         "Nullam maximus dolor suscipit magna lobortis, eu finibus felis ornare.", | |||
|  |         "Sed eget nisl ac lorem eleifend fermentum ac quis nunc.", | |||
|  |         "Fusce vitae sapien quis turpis faucibus aliquet sit amet et risus.", | |||
|  |         "Nunc faucibus arcu ut purus fringilla bibendum.", | |||
|  |         "Phasellus pretium justo vel eros facilisis varius.", | |||
|  |         "In efficitur quam dapibus nulla commodo, in aliquam nulla bibendum." | |||
|  |     }; | |||
|  | 
 | |||
|  |     private int _consoleTestQuantity = 190; | |||
|  | 
 | |||
|  |     [Category("Console Test")] | |||
|  |     public int ConsoleTestQuantity | |||
|  |     { | |||
|  |         get { return _consoleTestQuantity; } | |||
|  |         set { _consoleTestQuantity = value; } | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Console Test")] | |||
|  |     public void ConsoleTest() | |||
|  |     { | |||
|  |         var sw = new Stopwatch(); | |||
|  |         sw.Start(); | |||
|  |         for (var i = 0; i < ConsoleTestQuantity; i++) | |||
|  |         { | |||
|  |             var sample = SampleLogs[Random.Range(0, SampleLogs.Length)]; | |||
|  | 
 | |||
|  |             var mode = Random.Range(0, 3); | |||
|  | 
 | |||
|  |             switch (mode) | |||
|  |             { | |||
|  |                 case 0: | |||
|  |                     Debug.Log(sample); | |||
|  |                     break; | |||
|  |                 case 1: | |||
|  |                     Debug.LogWarning(sample); | |||
|  |                     break; | |||
|  |                 case 2: | |||
|  |                     Debug.LogError(sample); | |||
|  |                     break; | |||
|  |             } | |||
|  |         } | |||
|  |         sw.Stop(); | |||
|  | 
 | |||
|  |         Debug.Log("Posted {0} log messages in {1}s".Fmt(ConsoleTestQuantity, sw.Elapsed.TotalSeconds)); | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Console Test")] | |||
|  |     public void TestThrowException() | |||
|  |     { | |||
|  |         throw new Exception("This is certainly a test."); | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Console Test")] | |||
|  |     public void TestLogError() | |||
|  |     { | |||
|  |         Debug.LogError("Test Error"); | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Console Test")] | |||
|  |     public void TestLogWarning() | |||
|  |     { | |||
|  |         Debug.LogWarning("Test Warning"); | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Console Test")] | |||
|  |     public void TestLogInfo() | |||
|  |     { | |||
|  |         Debug.Log("Test Info"); | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Console Test")] | |||
|  |     public void TestRichText() | |||
|  |     { | |||
|  |         Debug.Log( | |||
|  |             "<b>Rich text</b> is <i>supported</i> in the <b><i>console</i></b>. <color=#7fc97a>Color tags, too!</color>"); | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Console Test")] | |||
|  |     public void TestLongMessage() | |||
|  |     { | |||
|  |         var m = SampleLogs[0]; | |||
|  | 
 | |||
|  |         for (var i = 0; i < 2; ++i) | |||
|  |         { | |||
|  |             m = m + m; | |||
|  |         } | |||
|  | 
 | |||
|  |         var s = m; | |||
|  | 
 | |||
|  |         for (var i = 0; i < 13; ++i) | |||
|  |         { | |||
|  |             s = s + "\n" + m; | |||
|  |         } | |||
|  | 
 | |||
|  |         Debug.Log(s); | |||
|  |     } | |||
|  | 
 | |||
|  |     [Category("Sorting Test"), Sort(2)] | |||
|  |     public float ShouldAppearLast { get; set; } | |||
|  | 
 | |||
|  |     [Category("Sorting Test"), Sort(-1)] | |||
|  |     public float ShouldAppearFirst { get; set; } | |||
|  | 
 | |||
|  |     [Category("Sorting Test")] | |||
|  |     public float ShouldAppearMiddle { get; set; } | |||
|  | 
 | |||
|  |     private float _updateTest; | |||
|  | 
 | |||
|  |     public float UpdateTest | |||
|  |     { | |||
|  |         get { return _updateTest; } | |||
|  |         set | |||
|  |         { | |||
|  |             _updateTest = value; | |||
|  |             OnPropertyChanged("UpdateTest"); | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     [DisplayName("Modified Name")] | |||
|  |     public float DisplayNameTest { get; set; } | |||
|  | 
 | |||
|  |     [Category("Read Only")] | |||
|  |     public bool ReadOnlyBool { get; private set; } | |||
|  | 
 | |||
|  |     [Category("Read Only")] | |||
|  |     public float ReadOnlyNumber { get; private set; } | |||
|  | 
 | |||
|  |     [Category("Read Only")] | |||
|  |     public string ReadOnlyString { get; private set; } | |||
|  | 
 | |||
|  |     [Category("Read Only")] | |||
|  |     public TestValues ReadOnlyEnum { get; private set; } | |||
|  | 
 | |||
|  |     [Category("Read Only")] | |||
|  |     public string TestLongReadOnlyString | |||
|  |     { | |||
|  |         get { return "This is a really long string with no reason other than to test long strings."; } | |||
|  |     } | |||
|  | 
 | |||
|  | #endif | |||
|  | } |