public void TestDoubleSensor() { var sensor = new DoubleSensor(); var ex = Assert.Throws<Exception>(() => SensorTypes.GetConfig(sensor)); Assert.True(ex.Message.Contains("Sensor Configuration Error: Simulator.Tests.Web.DoubleSensor")); }
public void TestEnumSensor() { var sensor = new EnumSensor(); var parameterCount = 2; var typeCount = 1; var valuesCount = 3; var config = SensorTypes.GetConfig(sensor); Assert.AreEqual("Enum", config.Name); Assert.AreEqual(typeCount, config.Types.Length); Assert.AreEqual("Simulator.Bridge.Data.ImageData", config.Types[0]); Assert.AreEqual(parameterCount, config.Parameters.Count); Assert.AreEqual("car", config.Parameters[0].Name); Assert.AreEqual("C", config.Parameters[0].DefaultValue); Assert.AreEqual("enum", config.Parameters[0].Type); Assert.AreEqual("truck", config.Parameters[1].Name); Assert.AreEqual("A", config.Parameters[1].DefaultValue); Assert.AreEqual("enum", config.Parameters[1].Type); Assert.AreEqual(valuesCount, config.Parameters[0].Values.Length); Assert.AreEqual("A", config.Parameters[0].Values[0]); Assert.AreEqual("B", config.Parameters[0].Values[1]); Assert.AreEqual("C", config.Parameters[0].Values[2]); Assert.False(config.Parameters.Exists(p => p.Name == "NotPresent")); }
public void TestMinMaxSensor() { var sensor = new MinMaxSensor(); var parameterCount = 3; var typeCount = 1; var config = SensorTypes.GetConfig(sensor); Assert.AreEqual("MinMax", config.Name); Assert.AreEqual(typeCount, config.Types.Length); Assert.AreEqual("Simulator.Bridge.Data.ImageData", config.Types[0]); Assert.AreEqual(parameterCount, config.Parameters.Count); Assert.AreEqual("length", config.Parameters[0].Name); Assert.AreEqual(500, config.Parameters[0].DefaultValue); Assert.AreEqual(1f, config.Parameters[0].Min); Assert.AreEqual(1920f, config.Parameters[0].Max); Assert.AreEqual("distance", config.Parameters[1].Name); Assert.AreEqual(5f, config.Parameters[1].DefaultValue); Assert.AreEqual(0f, config.Parameters[1].Min); Assert.AreEqual(9f, config.Parameters[1].Max); Assert.AreEqual("sad", config.Parameters[2].Name); Assert.AreEqual(false, config.Parameters[2].DefaultValue); Assert.AreEqual(null, config.Parameters[2].Min); Assert.AreEqual(null, config.Parameters[2].Max); }
public void TestColorSensor() { var sensor = new ColorSensor(); var parameterCount = 2; var typeCount = 1; var config = SensorTypes.GetConfig(sensor); Assert.AreEqual("Color", config.Name); Assert.AreEqual(typeCount, config.Types.Length); Assert.AreEqual("Simulator.Bridge.Data.ImageData", config.Types[0]); Assert.AreEqual(parameterCount, config.Parameters.Count); Assert.AreEqual("picture", config.Parameters[0].Name); Assert.AreEqual("#FF00FFFF", config.Parameters[0].DefaultValue); Assert.AreEqual("color", config.Parameters[0].Type); Assert.AreEqual("space", config.Parameters[1].Name); Assert.AreEqual("#00000000", config.Parameters[1].DefaultValue); Assert.AreEqual("color", config.Parameters[1].Type); Assert.False(config.Parameters.Exists(p => p.Name == "NotPresent")); }
public void TestBoolSensor() { var sensor = new BoolSensor(); var parameterCount = 2; var typeCount = 1; var config = SensorTypes.GetConfig(sensor); Assert.AreEqual("Bool", config.Name); Assert.AreEqual(typeCount, config.Types.Length); Assert.AreEqual("Simulator.Bridge.Data.ImageData", config.Types[0]); Assert.AreEqual(parameterCount, config.Parameters.Count); Assert.AreEqual("happy", config.Parameters[0].Name); Assert.AreEqual(true, config.Parameters[0].DefaultValue); Assert.AreEqual("bool", config.Parameters[0].Type); Assert.AreEqual("duckie", config.Parameters[1].Name); Assert.AreEqual(false, config.Parameters[1].DefaultValue); Assert.AreEqual("bool", config.Parameters[1].Type); Assert.False(config.Parameters.Exists(p => p.Name == "NotPresent")); }
public void TestIntSensor() { var sensor = new IntSensor(); var parameterCount = 2; var typeCount = 1; var config = SensorTypes.GetConfig(sensor); Assert.AreEqual("Int", config.Name); Assert.AreEqual(typeCount, config.Types.Length); Assert.AreEqual("Simulator.Bridge.Data.ImageData", config.Types[0]); Assert.AreEqual(parameterCount, config.Parameters.Count); Assert.AreEqual("year", config.Parameters[0].Name); Assert.AreEqual(2019, config.Parameters[0].DefaultValue); Assert.AreEqual("int", config.Parameters[0].Type); Assert.AreEqual("LG", config.Parameters[1].Name); Assert.AreEqual(0, config.Parameters[1].DefaultValue); Assert.AreEqual("int", config.Parameters[1].Type); Assert.False(config.Parameters.Exists(p => p.Name == "NotPresent")); }
public void TestStringSensor() { var sensor = new StringSensor(); var parameterCount = 2; var typeCount = 1; var config = SensorTypes.GetConfig(sensor); Assert.AreEqual("String", config.Name); Assert.AreEqual(typeCount, config.Types.Length); Assert.AreEqual("Simulator.Bridge.Data.ImageData", config.Types[0]); Assert.AreEqual(parameterCount, config.Parameters.Count); Assert.AreEqual("Help", config.Parameters[0].Name); Assert.AreEqual("helping", config.Parameters[0].DefaultValue); Assert.AreEqual("string", config.Parameters[0].Type); Assert.AreEqual("LG", config.Parameters[1].Name); Assert.AreEqual(null, config.Parameters[1].DefaultValue); Assert.AreEqual("string", config.Parameters[1].Type); Assert.False(config.Parameters.Exists(p => p.Name == "NotPresent")); }
public void TestManyDataSensor() { var sensor = new ManyDataSensor(); var parameterCount = 1; var expectedTypes = new [] { typeof(ImageData), typeof(PointCloudData), typeof(Detected3DObjectArray), typeof(Detected3DObjectData), }; var config = SensorTypes.GetConfig(sensor); Assert.AreEqual("ManyData", config.Name); Assert.AreEqual(expectedTypes.Length, config.Types.Length); for (int i=0; i<expectedTypes.Length; i++) { Assert.AreEqual(expectedTypes[i].ToString(), config.Types[i], $"Wrong type, expected {expectedTypes[i]}, got {config.Types[i]}"); } Assert.AreEqual(parameterCount, config.Parameters.Count); Assert.AreEqual("data", config.Parameters[0].Name); Assert.AreEqual(2, config.Parameters[0].DefaultValue); }
public static void LoadSensorPlugin(Manifest manifest, VfsEntry dir) { #if UNITY_EDITOR //if (SensorDebugModeEnabled == true) // TODO Why is this not working? if (EditorPrefs.GetBool("Simulator/Sensor Debug Mode", false) == true) { if (File.Exists(Path.Combine(BundleConfig.ExternalBase, "Sensors", manifest.assetName, $"{manifest.assetName}.prefab"))) { Debug.Log($"Loading {manifest.assetName} in Sensor Debug Mode. If you wish to use this sensor plugin from WISE, disable Sensor Debug Mode in Simulator->Sensor Debug Mode or remove the sensor from Assets/External/Sensors"); var prefab = (GameObject)AssetDatabase.LoadAssetAtPath(Path.Combine(BundleConfig.ExternalBase, "Sensors", manifest.assetName, $"{manifest.assetName}.prefab"), typeof(GameObject)); SensorPrefabs.Add(prefab.GetComponent <SensorBase>()); Sensors.Add(SensorTypes.GetConfig(prefab.GetComponent <SensorBase>())); if (!SensorTypeLookup.ContainsKey(manifest.assetGuid)) { SensorTypeLookup.Add(manifest.assetGuid, prefab.GetComponent <SensorBase>()); } var pluginType = prefab.GetComponent <SensorBase>().GetDataBridgePlugin(); if (pluginType != null) { var sensorBridgePlugin = Activator.CreateInstance(pluginType) as ISensorBridgePlugin; foreach (var kv in BridgePlugins.All) { sensorBridgePlugin.Register(kv.Value); } } return; } } #endif if (SensorTypeLookup.ContainsKey(manifest.assetGuid)) { return; } if (manifest.assetFormat != BundleConfig.Versions[BundleConfig.BundleTypes.Sensor]) { throw new Exception($"Manifest version mismatch, expected {BundleConfig.Versions[BundleConfig.BundleTypes.Sensor]}, got {manifest.assetFormat}"); } if (Sensors.FirstOrDefault(s => s.Guid == manifest.assetGuid) != null) { return; } Assembly pluginSource = LoadAssembly(dir, $"{manifest.assetName}.dll"); foreach (Type ty in pluginSource.GetTypes()) { if (typeof(ISensorBridgePlugin).IsAssignableFrom(ty)) { var sensorBridgePlugin = Activator.CreateInstance(ty) as ISensorBridgePlugin; foreach (var kv in BridgePlugins.All) { sensorBridgePlugin.Register(kv.Value); } } } string platform = SystemInfo.operatingSystemFamily == OperatingSystemFamily.Windows ? "windows" : "linux"; var pluginStream = dir.Find($"{manifest.assetGuid}_sensor_main_{platform}").SeekableStream(); AssetBundle pluginBundle = AssetBundle.LoadFromStream(pluginStream); var pluginAssets = pluginBundle.GetAllAssetNames(); var texDir = dir.Find($"{manifest.assetGuid}_sensor_textures"); if (texDir != null) { var texStream = dir.Find($"{manifest.assetGuid}_sensor_textures").SeekableStream(); var textureBundle = AssetBundle.LoadFromStream(texStream, 0, 1 << 20); if (!AssetBundle.GetAllLoadedAssetBundles().Contains(textureBundle)) { textureBundle.LoadAllAssets(); } } SensorBase pluginBase = pluginBundle.LoadAsset <GameObject>(pluginAssets[0]).GetComponent <SensorBase>(); SensorConfig config = SensorTypes.GetConfig(pluginBase); config.Guid = manifest.assetGuid; Sensors.Add(config); SensorPrefabs.Add(pluginBase); if (!SensorTypeLookup.ContainsKey(manifest.assetGuid)) { SensorTypeLookup.Add(manifest.assetGuid, pluginBase); } }