Add basic network address parsing

This commit is contained in:
Jet the Hawk 2023-03-03 23:39:53 -05:00
parent 9a9218ece5
commit 7af0a625d9
8 changed files with 746 additions and 87 deletions

View file

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: a88ec7c8519d440ba42386768654c2de
timeCreated: 1677903415

View file

@ -0,0 +1,30 @@
#nullable enable
using Core.Serialization;
using Utility;
namespace OS.Network
{
public struct Subnet : ISerializable
{
public uint NetworkAddress;
public uint Mask;
public string CidrNotation
=> $"{NetUtility.GetNetworkAddressString(NetworkAddress & Mask)}/{NetUtility.CountBits(Mask)}";
/// <inheritdoc />
public void Write(IDataWriter writer)
{
writer.Write(NetworkAddress);
writer.Write(Mask);
}
/// <inheritdoc />
public void Read(IDataReader reader)
{
NetworkAddress = reader.Read_uint();
Mask = reader.Read_uint();
}
}
}

View file

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 60bf45cbcf094bfe8521495efec3b4e8
timeCreated: 1677903428

View file

@ -0,0 +1,162 @@
#nullable enable
using System;
using System.Text;
using OS.Network;
namespace Utility
{
public static class NetUtility
{
public static bool TryParseNetworkAddress(string networkAddressString, out uint networkAddress)
{
networkAddress = default;
if (string.IsNullOrWhiteSpace(networkAddressString))
return false;
if (networkAddressString.Length > 15)
return false;
string[] octetStrings = networkAddressString.Split('.');
if (octetStrings.Length != 4)
return false;
var addr = 0u;
for (var i = 0; i < octetStrings.Length; i++)
{
string octetString = octetStrings[i];
if (!byte.TryParse(octetString, out byte octet))
return false;
addr = (addr << 8) + octet;
}
networkAddress = addr;
return true;
}
public static string GetNetworkAddressString(uint networkAddress)
{
var sb = new StringBuilder(15, 15);
for (var i = 0; i < 4; i++)
{
if (i > 0)
sb.Append(".");
var octet = (byte) (networkAddress >> (24 - (i * 8)));
sb.Append(octet);
}
return sb.ToString();
}
public static bool TryParseMacAddress(string macAddressString, out long macAddress)
{
macAddress = default;
if (string.IsNullOrWhiteSpace(macAddressString))
return false;
if (macAddressString.Length != 17)
return false;
long addr = 0;
try
{
for (var i = 0; i < macAddressString.Length; i += 3)
{
if (i + 2 != macAddressString.Length && macAddressString[i + 2] != ':')
return false;
char aHex = macAddressString[i + 1];
char bHex = macAddressString[i];
var octet = (byte) ((16 * StringUtility.GetHexDigitValue(bHex)) + StringUtility.GetHexDigitValue(aHex));
addr = (addr << 8) + octet;
}
}
catch (FormatException)
{
return false;
}
macAddress = addr;
return true;
}
public static bool TryParseCidrNotation(string cidrNotation, out Subnet subnet)
{
subnet = default;
if (string.IsNullOrWhiteSpace(cidrNotation))
return false;
string[] addressAndMask = cidrNotation.Split('/');
if (addressAndMask.Length != 2)
return false;
string addressString = addressAndMask[0];
if (!TryParseNetworkAddress(addressString, out uint address))
return false;
string maskString = addressAndMask[1];
if (!byte.TryParse(maskString, out byte maskBitCount))
return false;
if (maskBitCount >= 32) // what the fuck?
return false;
uint mask = 0;
for (var i = 0; i < maskBitCount; i++)
{
mask |= (uint) (1 << (31 - i));
}
if ((address & mask) != address)
return false;
subnet = new Subnet
{
NetworkAddress = (uint) address,
Mask = mask
};
return true;
}
public static string GetMacAddressString(long macAddress)
{
var sb = new StringBuilder(18, 18);
for (var i = 0; i < 6; i++)
{
if (i > 0)
sb.Append(":");
byte octet = (byte) (macAddress >> (40 - (i * 8)));
if (octet <= 0xf)
sb.Append("0");
sb.Append(octet.ToString("x"));
}
return sb.ToString();
}
public static int CountBits(uint value)
{
var count = 0;
for (var i = 0; i < 32; i++)
{
if ((value & (1 << i)) != 0)
count++;
}
return count;
}
}
}

View file

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: ef17f892f5c546a89c914f42e7dfd135
timeCreated: 1677896057

View file

@ -1,11 +1,42 @@
#nullable enable
using System;
using System.Text;
namespace Utility
{
public static class StringUtility
{
public static byte GetHexDigitValue(char hex)
{
return hex switch
{
'0' => 0,
'1' => 1,
'2' => 2,
'3' => 3,
'4' => 4,
'5' => 5,
'6' => 6,
'7' => 7,
'8' => 8,
'9' => 9,
'a' => 10,
'A' => 10,
'b' => 11,
'B' => 11,
'c' => 12,
'C' => 12,
'd' => 13,
'D' => 13,
'e' => 14,
'E' => 14,
'f' => 15,
'F' => 15,
_ => throw new FormatException($"{hex} is not a hex digit")
};
}
public static void TrimEnd(this StringBuilder stringBuilder)
{
while (stringBuilder.Length > 0 && char.IsWhiteSpace(stringBuilder[^1]))

View file

@ -1,11 +1,77 @@
using System.Collections;
using System.Collections.Generic;
using NUnit.Framework;
using OS.Network;
using UnityEngine.TestTools;
using Utility;
namespace Tests.EditMode_Tests
{
public class NetUtilityTests
{
private readonly Dictionary<string, long> macAddresses = new Dictionary<string, long>
{
{ "00:00:00:00:00:00", 0x000000000000 },
{ "ff:ff:ff:ff:ff:ff", 0xffffffffffff },
{ "de:ad:be:ef:de:ad", 0xdeadbeefdead },
{ "01:23:45:67:89:ab", 0x0123456789ab },
{ "cd:ef:01:23:45:67", 0xcdef01234567 },
{ "89:ab:cd:ef:01:23", 0x89abcdef0123 },
{ "45:67:89:ab:cd:ef", 0x456789abcdef },
{ "00:11:22:33:44:55", 0x001122334455 },
{ "66:77:88:99:aa:bb", 0x66778899aabb },
{ "cc:dd:ee:ff:00:11", 0xccddeeff0011 },
{ "22:33:44:55:66:77", 0x223344556677 },
{ "88:99:aa:bb:cc:dd", 0x8899aabbccdd },
{ "ee:ff:00:11:22:33", 0xeeff00112233 },
{ "44:55:66:77:88:99", 0x445566778899 },
{ "aa:bb:cc:dd:ee:ff", 0xaabbccddeeff },
{ "86:75:30:9a:bc:de", 0x8675309abcde },
{ "69:42:06:66:de:af", 0x69420666deaf },
{ "c0:ff:ee:1a:77:e0", 0xc0ffee1a77e0 }
};
[Test]
public void CidrNotationTest()
{
string cidrNotation = "10.0.0.0/24";
uint expectedMask = 0xffffff00;
uint expectedAddress = 0x0a000000;
bool result = NetUtility.TryParseCidrNotation(cidrNotation, out Subnet subnet);
Assert.IsTrue(result);
Assert.AreEqual(expectedMask, subnet.Mask);
Assert.AreEqual(expectedAddress, subnet.NetworkAddress);
Assert.AreEqual(cidrNotation, subnet.CidrNotation);
}
[Test]
public void MacAddressParseTest()
{
foreach (string macAddress in macAddresses.Keys)
{
long expected = macAddresses[macAddress];
NetUtility.TryParseMacAddress(macAddress, out long result);
Assert.AreEqual(expected, result);
}
}
[Test]
public void MacAddressToStringTest()
{
foreach (string expected in macAddresses.Keys)
{
long macAddress = macAddresses[expected];
string result = NetUtility.GetMacAddressString(macAddress);
Assert.AreEqual(expected, result);
}
}
}
public class PathUtilityTests
{
[Test]

View file

@ -1,6 +1,30 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &1
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 12004, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_PixelRect:
serializedVersion: 2
x: 646
y: 573
width: 873
height: 573
m_ShowMode: 0
m_Title: Test Runner
m_RootView: {fileID: 4}
m_MinSize: {x: 100, y: 121}
m_MaxSize: {x: 4000, y: 4021}
m_Maximized: 0
--- !u!114 &2
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -20,11 +44,61 @@ MonoBehaviour:
height: 2069
m_ShowMode: 4
m_Title: Project
m_RootView: {fileID: 2}
m_RootView: {fileID: 5}
m_MinSize: {x: 875, y: 300}
m_MaxSize: {x: 10000, y: 10000}
m_Maximized: 1
--- !u!114 &2
--- !u!114 &3
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name: TestRunnerWindow
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 873
height: 573
m_MinSize: {x: 100, y: 100}
m_MaxSize: {x: 4000, y: 4000}
m_ActualView: {fileID: 15}
m_Panes:
- {fileID: 15}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &4
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 3}
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 873
height: 573
m_MinSize: {x: 100, y: 121}
m_MaxSize: {x: 4000, y: 4021}
vertical: 0
controlID: 129
--- !u!114 &5
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -37,9 +111,9 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 3}
- {fileID: 5}
- {fileID: 4}
- {fileID: 6}
- {fileID: 8}
- {fileID: 7}
m_Position:
serializedVersion: 2
x: 0
@ -52,7 +126,7 @@ MonoBehaviour:
m_TopViewHeight: 30
m_UseBottomView: 1
m_BottomViewHeight: 20
--- !u!114 &3
--- !u!114 &6
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -74,7 +148,7 @@ MonoBehaviour:
m_MinSize: {x: 0, y: 0}
m_MaxSize: {x: 0, y: 0}
m_LastLoadedLayoutName:
--- !u!114 &4
--- !u!114 &7
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -95,7 +169,7 @@ MonoBehaviour:
height: 20
m_MinSize: {x: 0, y: 0}
m_MaxSize: {x: 0, y: 0}
--- !u!114 &5
--- !u!114 &8
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -108,8 +182,8 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 6}
- {fileID: 11}
- {fileID: 9}
- {fileID: 14}
m_Position:
serializedVersion: 2
x: 0
@ -119,8 +193,8 @@ MonoBehaviour:
m_MinSize: {x: 300, y: 200}
m_MaxSize: {x: 24288, y: 16192}
vertical: 0
controlID: 69
--- !u!114 &6
controlID: 18
--- !u!114 &9
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -133,8 +207,8 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 7}
- {fileID: 10}
- {fileID: 13}
m_Position:
serializedVersion: 2
x: 0
@ -144,8 +218,8 @@ MonoBehaviour:
m_MinSize: {x: 200, y: 200}
m_MaxSize: {x: 16192, y: 16192}
vertical: 1
controlID: 70
--- !u!114 &7
controlID: 19
--- !u!114 &10
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -158,8 +232,8 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 8}
- {fileID: 9}
- {fileID: 11}
- {fileID: 12}
m_Position:
serializedVersion: 2
x: 0
@ -169,8 +243,8 @@ MonoBehaviour:
m_MinSize: {x: 200, y: 100}
m_MaxSize: {x: 16192, y: 8096}
vertical: 0
controlID: 71
--- !u!114 &8
controlID: 95
--- !u!114 &11
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -189,14 +263,14 @@ MonoBehaviour:
y: 0
width: 726
height: 1289
m_MinSize: {x: 201, y: 221}
m_MaxSize: {x: 4001, y: 4021}
m_ActualView: {fileID: 13}
m_MinSize: {x: 200, y: 200}
m_MaxSize: {x: 4000, y: 4000}
m_ActualView: {fileID: 17}
m_Panes:
- {fileID: 13}
- {fileID: 17}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &9
--- !u!114 &12
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -215,16 +289,16 @@ MonoBehaviour:
y: 0
width: 2206
height: 1289
m_MinSize: {x: 202, y: 221}
m_MaxSize: {x: 4002, y: 4021}
m_ActualView: {fileID: 14}
m_MinSize: {x: 200, y: 200}
m_MaxSize: {x: 4000, y: 4000}
m_ActualView: {fileID: 18}
m_Panes:
- {fileID: 14}
- {fileID: 12}
- {fileID: 15}
- {fileID: 18}
- {fileID: 16}
- {fileID: 19}
m_Selected: 0
m_LastSelected: 1
--- !u!114 &10
--- !u!114 &13
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -245,14 +319,14 @@ MonoBehaviour:
height: 730
m_MinSize: {x: 231, y: 271}
m_MaxSize: {x: 10001, y: 10021}
m_ActualView: {fileID: 16}
m_ActualView: {fileID: 20}
m_Panes:
- {fileID: 16}
- {fileID: 17}
- {fileID: 18}
- {fileID: 20}
- {fileID: 21}
- {fileID: 22}
m_Selected: 0
m_LastSelected: 1
--- !u!114 &11
--- !u!114 &14
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -271,14 +345,301 @@ MonoBehaviour:
y: 0
width: 908
height: 2019
m_MinSize: {x: 276, y: 71}
m_MaxSize: {x: 4001, y: 4021}
m_ActualView: {fileID: 19}
m_MinSize: {x: 275, y: 50}
m_MaxSize: {x: 4000, y: 4000}
m_ActualView: {fileID: 23}
m_Panes:
- {fileID: 19}
- {fileID: 23}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &12
--- !u!114 &15
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 13401, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_MinSize: {x: 100, y: 100}
m_MaxSize: {x: 4000, y: 4000}
m_TitleContent:
m_Text: Test Runner
m_Image: {fileID: 0}
m_Tooltip:
m_Pos:
serializedVersion: 2
x: 646
y: 573
width: 873
height: 552
m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas:
m_LastAppliedPresetName: Default
m_SaveData: []
m_Spl:
ID: 159
splitterInitialOffset: 0
currentActiveSplitter: -1
realSizes:
- 361
- 121
relativeSizes:
- 0.75
- 0.25
minSizes:
- 32
- 32
maxSizes:
- 0
- 0
lastTotalSize: 482
splitSize: 6
xOffset: 0
m_Version: 1
oldRealSizes:
oldMinSizes:
oldMaxSizes:
oldSplitSize: 0
m_TestTypeToolbarIndex: 1
m_PlayModeTestListGUI:
m_Window: {fileID: 0}
m_NewResultList: []
m_ResultText:
m_ResultStacktrace:
m_TestListState:
scrollPos: {x: 0, y: 0}
m_SelectedIDs:
m_LastClickedID: 0
m_ExpandedIDs:
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
m_OriginalName:
m_EditFieldRect:
serializedVersion: 2
x: 0
y: 0
width: 0
height: 0
m_UserData: 0
m_IsWaitingForDelay: 0
m_IsRenaming: 0
m_OriginalEventType: 11
m_IsRenamingFilename: 0
m_ClientGUIView: {fileID: 0}
m_SearchString:
m_TestRunnerUIFilter:
PassedHidden: 0
FailedHidden: 0
NotRunHidden: 0
m_SearchString:
selectedCategoryMask: 0
availableCategories: []
m_SelectedOption: 0
m_EditModeTestListGUI:
m_Window: {fileID: 15}
m_NewResultList:
- id: 1000
uniqueId: '[Socially Distant][suite]'
name: Socially Distant
fullName: Socially Distant
resultStatus: 1
duration: 0.083542
messages:
output:
stacktrace:
notRunnable: 0
ignoredOrSkipped: 0
description:
isSuite: 1
categories: []
parentId:
parentUniqueId:
- id: 1007
uniqueId: '[EditModeTests.dll][suite]'
name: EditModeTests.dll
fullName: C:/Users/alkal/Projects/socdist-restitched/Library/ScriptAssemblies/EditModeTests.dll
resultStatus: 1
duration: 0.034597
messages:
output:
stacktrace:
notRunnable: 0
ignoredOrSkipped: 0
description:
isSuite: 1
categories: []
parentId: 1000
parentUniqueId: '[Socially Distant][suite]'
- id: 1008
uniqueId: EditModeTests.dll/[Tests][suite]
name: Tests
fullName: Tests
resultStatus: 1
duration: 0.0338733
messages:
output:
stacktrace:
notRunnable: 0
ignoredOrSkipped: 0
description:
isSuite: 1
categories: []
parentId: 1007
parentUniqueId: '[EditModeTests.dll][suite]'
- id: 1009
uniqueId: EditModeTests.dll/Tests/[EditModeTests][Tests.EditMode_Tests][suite]
name: EditMode_Tests
fullName: Tests.EditMode_Tests
resultStatus: 1
duration: 0.033539
messages:
output:
stacktrace:
notRunnable: 0
ignoredOrSkipped: 0
description:
isSuite: 1
categories: []
parentId: 1008
parentUniqueId: EditModeTests.dll/[Tests][suite]
- id: 1001
uniqueId: EditModeTests.dll/Tests/EditMode_Tests/[EditModeTests][Tests.EditMode_Tests.NetUtilityTests][suite]
name: NetUtilityTests
fullName: Tests.EditMode_Tests.NetUtilityTests
resultStatus: 1
duration: 0.0284394
messages:
output:
stacktrace:
notRunnable: 0
ignoredOrSkipped: 0
description:
isSuite: 1
categories: []
parentId: 1009
parentUniqueId: EditModeTests.dll/Tests/[EditModeTests][Tests.EditMode_Tests][suite]
- id: 1002
uniqueId: EditModeTests.dll/Tests/EditMode_Tests/NetUtilityTests/[EditModeTests][Tests.EditMode_Tests.NetUtilityTests.MacAddressParseTest]
name: MacAddressParseTest
fullName: Tests.EditMode_Tests.NetUtilityTests.MacAddressParseTest
resultStatus: 1
duration: 0.0167877
messages:
output:
stacktrace:
notRunnable: 0
ignoredOrSkipped: 0
description:
isSuite: 0
categories:
- Uncategorized
parentId: 1001
parentUniqueId: EditModeTests.dll/Tests/EditMode_Tests/[EditModeTests][Tests.EditMode_Tests.NetUtilityTests][suite]
- id: 1003
uniqueId: EditModeTests.dll/Tests/EditMode_Tests/NetUtilityTests/[EditModeTests][Tests.EditMode_Tests.NetUtilityTests.MacAddressToStringTest]
name: MacAddressToStringTest
fullName: Tests.EditMode_Tests.NetUtilityTests.MacAddressToStringTest
resultStatus: 1
duration: 0.0140822
messages:
output:
stacktrace:
notRunnable: 0
ignoredOrSkipped: 0
description:
isSuite: 0
categories:
- Uncategorized
parentId: 1001
parentUniqueId: EditModeTests.dll/Tests/EditMode_Tests/[EditModeTests][Tests.EditMode_Tests.NetUtilityTests][suite]
- id: 1004
uniqueId: EditModeTests.dll/Tests/EditMode_Tests/[EditModeTests][Tests.EditMode_Tests.PathUtilityTests][suite]
name: PathUtilityTests
fullName: Tests.EditMode_Tests.PathUtilityTests
resultStatus: 1
duration: 0.0119276
messages:
output:
stacktrace:
notRunnable: 0
ignoredOrSkipped: 0
description:
isSuite: 1
categories: []
parentId: 1009
parentUniqueId: EditModeTests.dll/Tests/[EditModeTests][Tests.EditMode_Tests][suite]
- id: 1006
uniqueId: EditModeTests.dll/Tests/EditMode_Tests/PathUtilityTests/[EditModeTests][Tests.EditMode_Tests.PathUtilityTests.GetFileName]
name: GetFileName
fullName: Tests.EditMode_Tests.PathUtilityTests.GetFileName
resultStatus: 1
duration: 0.0010109
messages:
output:
stacktrace:
notRunnable: 0
ignoredOrSkipped: 0
description:
isSuite: 0
categories:
- Uncategorized
parentId: 1004
parentUniqueId: EditModeTests.dll/Tests/EditMode_Tests/[EditModeTests][Tests.EditMode_Tests.PathUtilityTests][suite]
- id: 1005
uniqueId: EditModeTests.dll/Tests/EditMode_Tests/PathUtilityTests/[EditModeTests][Tests.EditMode_Tests.PathUtilityTests.IdiotProofTests]
name: IdiotProofTests
fullName: Tests.EditMode_Tests.PathUtilityTests.IdiotProofTests
resultStatus: 1
duration: 0.0004556
messages:
output:
stacktrace:
notRunnable: 0
ignoredOrSkipped: 0
description:
isSuite: 0
categories:
- Uncategorized
parentId: 1004
parentUniqueId: EditModeTests.dll/Tests/EditMode_Tests/[EditModeTests][Tests.EditMode_Tests.PathUtilityTests][suite]
m_ResultText: NetUtilityTests (0.028s)
m_ResultStacktrace:
m_TestListState:
scrollPos: {x: 0, y: 0}
m_SelectedIDs: bb356733
m_LastClickedID: 862401979
m_ExpandedIDs: e97e6797bc1b99b084ec67c2bb3567339d3f3a58b529bc7affffff7f
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
m_OriginalName:
m_EditFieldRect:
serializedVersion: 2
x: 0
y: 0
width: 0
height: 0
m_UserData: 0
m_IsWaitingForDelay: 0
m_IsRenaming: 0
m_OriginalEventType: 11
m_IsRenamingFilename: 0
m_ClientGUIView: {fileID: 0}
m_SearchString:
m_TestRunnerUIFilter:
PassedHidden: 0
FailedHidden: 0
NotRunHidden: 0
m_SearchString:
selectedCategoryMask: 0
availableCategories:
- Uncategorized
--- !u!114 &16
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -370,7 +731,7 @@ MonoBehaviour:
m_LowResolutionForAspectRatios: 01000000000000000000
m_XRRenderMode: 0
m_RenderTexture: {fileID: 0}
--- !u!114 &13
--- !u!114 &17
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -401,9 +762,9 @@ MonoBehaviour:
m_SceneHierarchy:
m_TreeViewState:
scrollPos: {x: 0, y: 0}
m_SelectedIDs: ca960000
m_LastClickedID: 38602
m_ExpandedIDs: 8c8cffffca960000069700001e9700002097000032970000449700005c9700007a97000096970000a6970000b8970000e4970000e6970000f29700000298000028980000
m_SelectedIDs:
m_LastClickedID: 0
m_ExpandedIDs: 72f5ffff80f6ffffbcf7ffff48f8ffff56f9ffffeaf9ffff30fbffff
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
@ -419,7 +780,7 @@ MonoBehaviour:
m_IsRenaming: 0
m_OriginalEventType: 11
m_IsRenamingFilename: 0
m_ClientGUIView: {fileID: 8}
m_ClientGUIView: {fileID: 11}
m_SearchString:
m_ExpandedScenes: []
m_CurrenRootInstanceID: 0
@ -427,7 +788,7 @@ MonoBehaviour:
m_IsLocked: 0
m_CurrentSortingName: TransformSorting
m_WindowGUID: 4c969a2b90040154d917609493e03593
--- !u!114 &14
--- !u!114 &18
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -461,7 +822,7 @@ MonoBehaviour:
collapsed: 0
displayed: 1
snapOffset: {x: 0, y: 0}
snapOffsetDelta: {x: -101, y: -1}
snapOffsetDelta: {x: -101, y: -26}
snapCorner: 3
id: Tool Settings
index: 0
@ -494,7 +855,7 @@ MonoBehaviour:
collapsed: 0
displayed: 0
snapOffset: {x: 0, y: 0}
snapOffsetDelta: {x: 0, y: 25}
snapOffsetDelta: {x: 0, y: 0}
snapCorner: 1
id: unity-search-toolbar
index: 1
@ -505,7 +866,7 @@ MonoBehaviour:
collapsed: 0
displayed: 1
snapOffset: {x: 0, y: 0}
snapOffsetDelta: {x: 0, y: 25}
snapOffsetDelta: {x: 0, y: 0}
snapCorner: 0
id: unity-transform-toolbar
index: 0
@ -538,7 +899,7 @@ MonoBehaviour:
collapsed: 0
displayed: 0
snapOffset: {x: 0, y: 0}
snapOffsetDelta: {x: 0, y: 25}
snapOffsetDelta: {x: 0, y: 0}
snapCorner: 0
id: Scene View/Light Settings
index: 0
@ -549,7 +910,7 @@ MonoBehaviour:
collapsed: 0
displayed: 0
snapOffset: {x: 0, y: 0}
snapOffsetDelta: {x: 0, y: 25}
snapOffsetDelta: {x: 0, y: 0}
snapCorner: 0
id: Scene View/Camera
index: 1
@ -560,7 +921,7 @@ MonoBehaviour:
collapsed: 0
displayed: 0
snapOffset: {x: 0, y: 0}
snapOffsetDelta: {x: 0, y: 25}
snapOffsetDelta: {x: 0, y: 0}
snapCorner: 0
id: Scene View/Cloth Constraints
index: 2
@ -571,7 +932,7 @@ MonoBehaviour:
collapsed: 0
displayed: 0
snapOffset: {x: 0, y: 0}
snapOffsetDelta: {x: 0, y: 25}
snapOffsetDelta: {x: 0, y: 0}
snapCorner: 0
id: Scene View/Cloth Collisions
index: 3
@ -582,7 +943,7 @@ MonoBehaviour:
collapsed: 0
displayed: 0
snapOffset: {x: 0, y: 0}
snapOffsetDelta: {x: 0, y: 25}
snapOffsetDelta: {x: 0, y: 0}
snapCorner: 0
id: Scene View/Navmesh Display
index: 4
@ -593,7 +954,7 @@ MonoBehaviour:
collapsed: 0
displayed: 0
snapOffset: {x: 0, y: 0}
snapOffsetDelta: {x: 0, y: 25}
snapOffsetDelta: {x: 0, y: 0}
snapCorner: 0
id: Scene View/Agent Display
index: 5
@ -604,7 +965,7 @@ MonoBehaviour:
collapsed: 0
displayed: 0
snapOffset: {x: 0, y: 0}
snapOffsetDelta: {x: 0, y: 25}
snapOffsetDelta: {x: 0, y: 0}
snapCorner: 0
id: Scene View/Obstacle Display
index: 6
@ -615,7 +976,7 @@ MonoBehaviour:
collapsed: 0
displayed: 0
snapOffset: {x: 0, y: 0}
snapOffsetDelta: {x: 0, y: 25}
snapOffsetDelta: {x: 0, y: 0}
snapCorner: 0
id: Scene View/Occlusion Culling
index: 7
@ -626,7 +987,7 @@ MonoBehaviour:
collapsed: 0
displayed: 0
snapOffset: {x: 0, y: 0}
snapOffsetDelta: {x: 0, y: 25}
snapOffsetDelta: {x: 0, y: 0}
snapCorner: 0
id: Scene View/Physics Debugger
index: 8
@ -637,7 +998,7 @@ MonoBehaviour:
collapsed: 0
displayed: 0
snapOffset: {x: 0, y: 0}
snapOffsetDelta: {x: 0, y: 25}
snapOffsetDelta: {x: 0, y: 0}
snapCorner: 0
id: Scene View/Scene Visibility
index: 9
@ -648,7 +1009,7 @@ MonoBehaviour:
collapsed: 0
displayed: 0
snapOffset: {x: 0, y: 0}
snapOffsetDelta: {x: 0, y: 25}
snapOffsetDelta: {x: 0, y: 0}
snapCorner: 0
id: Scene View/Particles
index: 10
@ -677,15 +1038,15 @@ MonoBehaviour:
layout: 4
m_WindowGUID: cc27987af1a868c49b0894db9c0f5429
m_Gizmos: 1
m_OverrideSceneCullingMask: 0
m_SceneIsLit: 0
m_OverrideSceneCullingMask: 6917529027641081856
m_SceneIsLit: 1
m_SceneLighting: 1
m_2DMode: 1
m_2DMode: 0
m_isRotationLocked: 0
m_PlayAudio: 0
m_AudioPlay: 0
m_Position:
m_Target: {x: 2419.5247, y: 1491.4675, z: -6.58584}
m_Target: {x: 0, y: 0, z: 0}
speed: 2
m_Value: {x: 0, y: 0, z: 0}
m_RenderMode: 0
@ -699,7 +1060,7 @@ MonoBehaviour:
m_SceneViewState:
m_AlwaysRefresh: 0
showFog: 1
showSkybox: 0
showSkybox: 1
showFlares: 1
showImageEffects: 1
showParticleSystems: 1
@ -716,7 +1077,7 @@ MonoBehaviour:
m_Size: {x: 0, y: 0}
yGrid:
m_Fade:
m_Target: 0
m_Target: 1
speed: 2
m_Value: 1
m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4}
@ -724,9 +1085,9 @@ MonoBehaviour:
m_Size: {x: 1, y: 1}
zGrid:
m_Fade:
m_Target: 1
m_Target: 0
speed: 2
m_Value: 1
m_Value: 0
m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4}
m_Pivot: {x: 0, y: 0, z: 0}
m_Size: {x: 1, y: 1}
@ -734,17 +1095,17 @@ MonoBehaviour:
m_GridAxis: 1
m_gridOpacity: 0.5
m_Rotation:
m_Target: {x: 0, y: 0, z: 0, w: 1}
m_Target: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226}
speed: 2
m_Value: {x: -0.000000026628507, y: 0.0000002747978, z: -0.00000006428691, w: -1.0000001}
m_Value: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226}
m_Size:
m_Target: 670.18506
m_Target: 10
speed: 2
m_Value: 10
m_Ortho:
m_Target: 1
m_Target: 0
speed: 2
m_Value: 1
m_Value: 0
m_CameraSettings:
m_Speed: 1
m_SpeedNormalized: 0.5
@ -765,7 +1126,7 @@ MonoBehaviour:
m_SceneVisActive: 1
m_LastLockedObject: {fileID: 0}
m_ViewIsLockedToObject: 0
--- !u!114 &15
--- !u!114 &19
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -813,7 +1174,7 @@ MonoBehaviour:
m_IsRenaming: 0
m_OriginalEventType: 11
m_IsRenamingFilename: 0
m_ClientGUIView: {fileID: 9}
m_ClientGUIView: {fileID: 12}
m_SearchString:
m_ActionsTreeState:
scrollPos: {x: 0, y: 0}
@ -1280,7 +1641,7 @@ MonoBehaviour:
m_Text: DefaultInputActions (Input Actions)
m_Image: {fileID: 0}
m_Tooltip:
--- !u!114 &16
--- !u!114 &20
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -1334,9 +1695,9 @@ MonoBehaviour:
m_IsLocked: 0
m_FolderTreeState:
scrollPos: {x: 0, y: 0}
m_SelectedIDs: 1e690000
m_LastClickedID: 26910
m_ExpandedIDs: 000000003a6800003c6800003e6800004068000042680000446800001e6900001a6c000000ca9a3b
m_SelectedIDs: 46690000
m_LastClickedID: 26950
m_ExpandedIDs: 00000000086900000a6900000c6900000e690000106900001269000000ca9a3b
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
@ -1352,7 +1713,7 @@ MonoBehaviour:
m_IsRenaming: 0
m_OriginalEventType: 11
m_IsRenamingFilename: 1
m_ClientGUIView: {fileID: 10}
m_ClientGUIView: {fileID: 13}
m_SearchString:
m_CreateAssetUtility:
m_EndAction: {fileID: 0}
@ -1364,7 +1725,7 @@ MonoBehaviour:
scrollPos: {x: 0, y: 0}
m_SelectedIDs:
m_LastClickedID: 0
m_ExpandedIDs: 000000003a6800003c6800003e680000406800004268000044680000
m_ExpandedIDs: 00000000086900000a6900000c6900000e6900001069000012690000
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
@ -1391,7 +1752,7 @@ MonoBehaviour:
m_ListAreaState:
m_SelectedInstanceIDs:
m_LastClickedInstanceID: 0
m_HadKeyboardFocusLastEvent: 1
m_HadKeyboardFocusLastEvent: 0
m_ExpandedInstanceIDs: c623000000000000a4610000
m_RenameOverlay:
m_UserAcceptedRename: 0
@ -1408,7 +1769,7 @@ MonoBehaviour:
m_IsRenaming: 0
m_OriginalEventType: 11
m_IsRenamingFilename: 1
m_ClientGUIView: {fileID: 10}
m_ClientGUIView: {fileID: 13}
m_CreateAssetUtility:
m_EndAction: {fileID: 0}
m_InstanceID: 0
@ -1420,7 +1781,7 @@ MonoBehaviour:
m_GridSize: 64
m_SkipHiddenPackages: 0
m_DirectoriesAreaWidth: 207
--- !u!114 &17
--- !u!114 &21
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -1448,7 +1809,7 @@ MonoBehaviour:
m_OverlayCanvas:
m_LastAppliedPresetName: Default
m_SaveData: []
--- !u!114 &18
--- !u!114 &22
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}
@ -1624,7 +1985,7 @@ MonoBehaviour:
m_ShowReferencedBuses: 1
m_ShowBusConnections: 0
m_ShowBusConnectionsOfSelection: 0
--- !u!114 &19
--- !u!114 &23
MonoBehaviour:
m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0}