417 lines
17 KiB
C#
417 lines
17 KiB
C#
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using System;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
using UCS_Status_Monitor.MQTT;
|
|
using UCS_Status_Monitor.MQTT.Teltonika;
|
|
|
|
namespace UCS_Status_Monitor.UnitTest
|
|
{
|
|
[TestClass]
|
|
public class Teltonika_Test
|
|
{
|
|
//[TestMethod]
|
|
//public void Parse_Teltonika_Json()
|
|
//{
|
|
// string json = "";
|
|
// string device = "testdevice";
|
|
// string location = "somewhere";
|
|
// var message = TeltonikaMessage.Deserialize(json, device, location);
|
|
// Assert.IsNull(message);
|
|
|
|
// json = "lufhy2q9478ry78aq39 f3g789fy egy 3ghuieg heasuhg egh eisulgh uielg hsalgire";
|
|
// message = TeltonikaMessage.Deserialize(json, device, location);
|
|
// Assert.IsNull(message);
|
|
|
|
// json = "[\"Temp\":\"360\",\"Uptime\":\"100680\",\"ThisMonthRX\":\"631408118\",\"ThisMonthTX\":\"967449262\",\"RSSI\":\"-62\",\"LastMonthRX\":\"63108118\",\"LastMonthTX\":\"94926132\",\"WanIp\":\"178,224,157,191\"]";
|
|
// message = TeltonikaMessage.Deserialize(json, device, location);
|
|
// Assert.IsNotNull(message);
|
|
// Assert.IsInstanceOfType(message, typeof(TeltonikaMessage));
|
|
|
|
// Assert.AreEqual(device, message.Device);
|
|
// Assert.AreEqual(location, message.Location);
|
|
// //Temp
|
|
// Assert.AreEqual(36.0, message.TempValue());
|
|
// Assert.AreEqual("36℃", message.Temp);
|
|
// //Uptime
|
|
// TimeSpan uptime = TimeSpan.FromSeconds(100680);
|
|
// Assert.AreEqual(uptime, message.UptimeValue());
|
|
// Assert.AreEqual("1 days 3 hours 58 min 0 sec", message.Uptime);
|
|
// //ThisMonthRX
|
|
// Assert.AreEqual((UInt32)631408118, message.ThisMonthRX);
|
|
// //ThisMonthTX
|
|
// Assert.AreEqual((UInt32)967449262, message.ThisMonthTX);
|
|
// //LastMonthRX
|
|
// Assert.AreEqual((UInt32)63108118, message.LastMonthRX);
|
|
// //LastMonthTX
|
|
// Assert.AreEqual((UInt32)94926132, message.LastMonthTX);
|
|
// //RSSI
|
|
// Assert.AreEqual(-62, message.RSSI);
|
|
// //WanIp
|
|
// Assert.AreEqual("178.224.157.191", message.WanIp);
|
|
//}
|
|
|
|
[TestMethod]
|
|
[DeploymentItem(@"TeltonikaV2.json")]
|
|
public void MyTest()
|
|
{
|
|
var myfile = "TeltonikaV2.json";
|
|
Assert.IsTrue(File.Exists(myfile), "Deployment failed: {0} did not get deployed.", myfile);
|
|
var json = File.ReadAllText(myfile);
|
|
Debug.WriteLine(json);
|
|
|
|
}
|
|
|
|
|
|
//[TestMethod]
|
|
//[DeploymentItem(@"TeltonikaV2.json")]
|
|
//public void Parse_Teltonika_V2_Json()
|
|
//{
|
|
// string json = "";
|
|
// string device = "testdevice";
|
|
// string location = "somewhere";
|
|
// var message = TeltonikaMessageV2.Deserialize(json, device, location);
|
|
// Assert.IsNull(message);
|
|
|
|
// json = "lufhy2q9478ry78aq39 f3g789fy egy 3ghuieg heasuhg egh eisulgh uielg hsalgire";
|
|
// message = TeltonikaMessageV2.Deserialize(json, device, location);
|
|
// Assert.IsNull(message);
|
|
|
|
// var myfile = "TeltonikaV2.json";
|
|
// Assert.IsTrue(File.Exists(myfile), "Deployment failed: {0} did not get deployed.", myfile);
|
|
// json = File.ReadAllText(myfile);
|
|
// Debug.WriteLine(json);
|
|
|
|
// message = TeltonikaMessageV2.Deserialize(json, device, location);
|
|
// Assert.IsNotNull(message);
|
|
// Assert.IsInstanceOfType(message, typeof(TeltonikaMessageV2));
|
|
|
|
// Assert.AreEqual(device, message.Device);
|
|
// Assert.AreEqual(location, message.Location);
|
|
|
|
// //Temp
|
|
// Assert.AreEqual(380, message.GSM.Temperature);
|
|
// Assert.AreEqual(38.0, message.GSM.TempValue());
|
|
// Assert.AreEqual("38℃", message.GSM.TempString());
|
|
// message.GSM.Temperature = null;
|
|
// Assert.IsNull(message.GSM.Temperature);
|
|
// Assert.AreEqual(0, message.GSM.TempValue());
|
|
// Assert.AreEqual("??℃", message.GSM.TempString());
|
|
|
|
// //Uptime
|
|
// //Assert.AreEqual(1698233689, message.Base.Time);
|
|
// //TimeSpan uptime = TimeSpan.FromSeconds(1698233689);
|
|
// //Assert.AreEqual(uptime, message.Base.UptimeValue());
|
|
// //Assert.AreEqual("1 days 3 hours 58 min 0 sec", message.Base.UptimeString(new DateTime(2023, 10, 9, 0, 0, 00)));
|
|
|
|
|
|
|
|
// //ThisMonthRX
|
|
// Assert.AreEqual(30888399, message.Usage.Rx);
|
|
// //ThisMonthTX
|
|
// Assert.AreEqual(4918720, message.Usage.Tx);
|
|
// ////LastMonthRX
|
|
// //Assert.AreEqual((UInt32)63108118, message.LastMonthRX);
|
|
// ////LastMonthTX
|
|
// //Assert.AreEqual((UInt32)94926132, message.LastMonthTX);
|
|
|
|
// //RSSI
|
|
// Assert.AreEqual(-72, message.GSM.RSSI);
|
|
|
|
// //WanIp
|
|
// Assert.AreEqual("100.65.5.230", message.GSM.IpV4[0]);
|
|
//}
|
|
[TestMethod]
|
|
[DeploymentItem(@"TeltonikaV2.json")]
|
|
[DeploymentItem(@"TeltonikaV2-7_06_19.json")]
|
|
public void Parse_Teltonika_V2_Json()
|
|
{
|
|
string json = "";
|
|
string device = "testdevice";
|
|
string location = "somewhere";
|
|
TeltonikaMessageV2? message = MQTTDeviceMessage.Deserialize<TeltonikaMessageV2>(json, device, location);
|
|
Assert.IsNull(message);
|
|
|
|
json = "lufhy2q9478ry78aq39 f3g789fy egy 3ghuieg heasuhg egh eisulgh uielg hsalgire";
|
|
message = MQTTDeviceMessage.Deserialize<TeltonikaMessageV2>(json, device, location);
|
|
Assert.IsNull(message);
|
|
|
|
var myfile = "TeltonikaV2.json";
|
|
Assert.IsTrue(File.Exists(myfile), "Deployment failed: {0} did not get deployed.", myfile);
|
|
json = File.ReadAllText(myfile);
|
|
Debug.WriteLine(json);
|
|
|
|
message = MQTTDeviceMessage.Deserialize<TeltonikaMessageV2>(json, device, location);
|
|
Assert.IsNotNull(message);
|
|
Assert.IsInstanceOfType<TeltonikaMessageV2>(message);
|
|
|
|
Assert.AreEqual(device, message.Device);
|
|
Assert.AreEqual(location, message.Location);
|
|
|
|
//Temp
|
|
Assert.IsNotNull(message.GSM);
|
|
Assert.AreEqual(380, message.GSM.Temperature);
|
|
Assert.AreEqual(38.0, message.GSM.TempValue());
|
|
Assert.AreEqual("38℃", message.GSM.TempString());
|
|
message.GSM.Temperature = null;
|
|
Assert.IsNull(message.GSM.Temperature);
|
|
Assert.AreEqual(0, message.GSM.TempValue());
|
|
Assert.AreEqual("??℃", message.GSM.TempString());
|
|
|
|
//Uptime
|
|
//Assert.AreEqual(1698233689, message.Base.Time);
|
|
//TimeSpan uptime = TimeSpan.FromSeconds(1698233689);
|
|
//Assert.AreEqual(uptime, message.Base.UptimeValue());
|
|
//Assert.AreEqual("1 days 3 hours 58 min 0 sec", message.Base.UptimeString(new DateTime(2023, 10, 9, 0, 0, 00)));
|
|
|
|
|
|
Assert.IsNotNull(message.Usage);
|
|
//ThisMonthRX
|
|
Assert.AreEqual((UInt64)30888399, message.Usage.Rx);
|
|
//ThisMonthTX
|
|
Assert.AreEqual((UInt64)4918720, message.Usage.Tx);
|
|
////LastMonthRX
|
|
//Assert.AreEqual((UInt32)63108118, message.LastMonthRX);
|
|
////LastMonthTX
|
|
//Assert.AreEqual((UInt32)94926132, message.LastMonthTX);
|
|
|
|
//RSSI
|
|
Assert.AreEqual(-72, message.GSM.RSSI);
|
|
|
|
//WanIp
|
|
Assert.IsNotNull(message.GSM.IpV4);
|
|
Assert.AreEqual("100.65.5.230", message.GSM.IpV4[0]);
|
|
}
|
|
|
|
|
|
[TestMethod]
|
|
[DeploymentItem(@"TeltonikaV2-7_06_19.json")]
|
|
public void Parse_Teltonika_V2_Firmware_7_06_19_Json()
|
|
{
|
|
string device = "testdevice";
|
|
string location = "somewhere";
|
|
|
|
var myfile = "TeltonikaV2-7_06_19.json";
|
|
Assert.IsTrue(File.Exists(myfile), "Deployment failed: {0} did not get deployed.", myfile);
|
|
string json = File.ReadAllText(myfile);
|
|
Debug.WriteLine(json);
|
|
|
|
var message = MQTTDeviceMessage.Deserialize<TeltonikaMessageV2>(json, device, location);
|
|
Assert.IsNotNull(message);
|
|
Assert.IsInstanceOfType<TeltonikaMessageV2>(message);
|
|
|
|
Assert.AreEqual(device, message.Device);
|
|
Assert.AreEqual(location, message.Location);
|
|
|
|
Assert.IsNotNull(message.Base);
|
|
Assert.AreEqual((uint)1755783197, message.Base.Time);
|
|
|
|
|
|
//Temp
|
|
Assert.IsNotNull(message.GSM);
|
|
Assert.AreEqual(390, message.GSM.Temperature);
|
|
Assert.AreEqual(39.0, message.GSM.TempValue());
|
|
Assert.AreEqual("39℃", message.GSM.TempString());
|
|
message.GSM.Temperature = null;
|
|
Assert.IsNull(message.GSM.Temperature);
|
|
Assert.AreEqual(0, message.GSM.TempValue());
|
|
Assert.AreEqual("??℃", message.GSM.TempString());
|
|
|
|
//Uptime
|
|
//Assert.AreEqual(1698233689, message.Base.Time);
|
|
//TimeSpan uptime = TimeSpan.FromSeconds(1698233689);
|
|
//Assert.AreEqual(uptime, message.Base.UptimeValue());
|
|
//Assert.AreEqual("1 days 3 hours 58 min 0 sec", message.Base.UptimeString(new DateTime(2023, 10, 9, 0, 0, 00)));
|
|
|
|
|
|
Assert.IsNotNull(message.Usage);
|
|
//ThisMonthRX
|
|
Assert.AreEqual((UInt64)24069, message.Usage.Rx);
|
|
//ThisMonthTX
|
|
Assert.AreEqual((UInt64)84, message.Usage.Tx);
|
|
////LastMonthRX
|
|
//Assert.AreEqual((UInt32)63108118, message.LastMonthRX);
|
|
////LastMonthTX
|
|
//Assert.AreEqual((UInt32)94926132, message.LastMonthTX);
|
|
|
|
//RSSI
|
|
Assert.AreEqual(-69, message.GSM.RSSI);
|
|
|
|
//WanIp
|
|
Assert.IsNotNull(message.GSM.IpV4);
|
|
Assert.AreEqual("178.225.75.54", message.GSM.IpV4[0]);
|
|
}
|
|
|
|
//[TestMethod]
|
|
//[DeploymentItem(@"TeltonikaV2.json")]
|
|
//public void Parse_Teltonika_V2_Json_2()
|
|
//{
|
|
// string json = "";
|
|
// string device = "testdevice";
|
|
// string location = "somewhere";
|
|
|
|
// var message = MQTTDevice.Deserialize<TeltonikaMessageV2>(json, device, location);
|
|
// Assert.IsNull(message);
|
|
|
|
// json = "lufhy2q9478ry78aq39 f3g789fy egy 3ghuieg heasuhg egh eisulgh uielg hsalgire";
|
|
// message = TeltonikaMessageV2.Deserialize(json, device, location);
|
|
// Assert.IsNull(message);
|
|
|
|
// var myfile = "TeltonikaV2.json";
|
|
// Assert.IsTrue(File.Exists(myfile), "Deployment failed: {0} did not get deployed.", myfile);
|
|
// json = File.ReadAllText(myfile);
|
|
// Debug.WriteLine(json);
|
|
|
|
// message = TeltonikaMessageV2.Deserialize(json, device, location);
|
|
// Assert.IsNotNull(message);
|
|
// Assert.IsInstanceOfType(message, typeof(TeltonikaMessageV2));
|
|
|
|
// Assert.AreEqual(device, message.Device);
|
|
// Assert.AreEqual(location, message.Location);
|
|
|
|
// //Temp
|
|
// Assert.AreEqual(380, message.GSM.Temperature);
|
|
// Assert.AreEqual(38.0, message.GSM.TempValue());
|
|
// Assert.AreEqual("38℃", message.GSM.TempString());
|
|
// message.GSM.Temperature = null;
|
|
// Assert.IsNull(message.GSM.Temperature);
|
|
// Assert.AreEqual(0, message.GSM.TempValue());
|
|
// Assert.AreEqual("??℃", message.GSM.TempString());
|
|
|
|
// //Uptime
|
|
// //Assert.AreEqual(1698233689, message.Base.Time);
|
|
// //TimeSpan uptime = TimeSpan.FromSeconds(1698233689);
|
|
// //Assert.AreEqual(uptime, message.Base.UptimeValue());
|
|
// //Assert.AreEqual("1 days 3 hours 58 min 0 sec", message.Base.UptimeString(new DateTime(2023, 10, 9, 0, 0, 00)));
|
|
|
|
|
|
|
|
// //ThisMonthRX
|
|
// Assert.AreEqual(30888399, message.Usage.Rx);
|
|
// //ThisMonthTX
|
|
// Assert.AreEqual(4918720, message.Usage.Tx);
|
|
// ////LastMonthRX
|
|
// //Assert.AreEqual((UInt32)63108118, message.LastMonthRX);
|
|
// ////LastMonthTX
|
|
// //Assert.AreEqual((UInt32)94926132, message.LastMonthTX);
|
|
|
|
// //RSSI
|
|
// Assert.AreEqual(-72, message.GSM.RSSI);
|
|
|
|
// //WanIp
|
|
// Assert.AreEqual("100.65.5.230", message.GSM.IpV4[0]);
|
|
//}
|
|
[TestMethod]
|
|
[DeploymentItem(@"TeltonikaV2.json")]
|
|
public void Parse_Teltonika_V2_Json_2()
|
|
{
|
|
string json = "";
|
|
string device = "testdevice";
|
|
string location = "somewhere";
|
|
|
|
TeltonikaMessageV2? message = MQTTDeviceMessage.Deserialize<TeltonikaMessageV2>(json, device, location);
|
|
Assert.IsNull(message);
|
|
|
|
json = "lufhy2q9478ry78aq39 f3g789fy egy 3ghuieg heasuhg egh eisulgh uielg hsalgire";
|
|
message = MQTTDeviceMessage.Deserialize<TeltonikaMessageV2>(json, device, location);
|
|
Assert.IsNull(message);
|
|
|
|
var myfile = "TeltonikaV2.json";
|
|
Assert.IsTrue(File.Exists(myfile), "Deployment failed: {0} did not get deployed.", myfile);
|
|
json = File.ReadAllText(myfile);
|
|
Debug.WriteLine(json);
|
|
|
|
message = MQTTDeviceMessage.Deserialize<TeltonikaMessageV2>(json, device, location);
|
|
Assert.IsNotNull(message);
|
|
Assert.IsInstanceOfType<TeltonikaMessageV2>(message);
|
|
|
|
Assert.AreEqual(device, message.Device);
|
|
Assert.AreEqual(location, message.Location);
|
|
|
|
//Temp
|
|
Assert.IsNotNull(message.GSM);
|
|
Assert.AreEqual(380, message.GSM.Temperature);
|
|
Assert.AreEqual(38.0, message.GSM.TempValue());
|
|
Assert.AreEqual("38℃", message.GSM.TempString());
|
|
message.GSM.Temperature = null;
|
|
Assert.IsNull(message.GSM.Temperature);
|
|
Assert.AreEqual(0, message.GSM.TempValue());
|
|
Assert.AreEqual("??℃", message.GSM.TempString());
|
|
|
|
//Uptime
|
|
Assert.IsNotNull(message.Base);
|
|
Assert.AreEqual((uint)1698233689, message.Base.Time);
|
|
Assert.AreEqual("2023-10-25 13:34:49", message.Base.LocalTime);
|
|
|
|
//TimeSpan uptime = TimeSpan.FromSeconds(1698233689);
|
|
//Assert.AreEqual(uptime, message.Base.UptimeValue());
|
|
//Assert.AreEqual("1 days 3 hours 58 min 0 sec", message.Base.UptimeString(new DateTime(2023, 10, 9, 0, 0, 00)));
|
|
|
|
|
|
Assert.IsNotNull(message.Usage);
|
|
//ThisMonthRX
|
|
Assert.AreEqual((UInt64)30888399, message.Usage.Rx);
|
|
//ThisMonthTX
|
|
Assert.AreEqual((UInt64)4918720, message.Usage.Tx);
|
|
////LastMonthRX
|
|
//Assert.AreEqual((UInt32)63108118, message.LastMonthRX);
|
|
////LastMonthTX
|
|
//Assert.AreEqual((UInt32)94926132, message.LastMonthTX);
|
|
|
|
//RSSI
|
|
Assert.AreEqual(-72, message.GSM.RSSI);
|
|
|
|
//WanIp
|
|
Assert.IsNotNull(message.GSM.IpV4);
|
|
Assert.AreEqual("100.65.5.230", message.GSM.IpV4[0]);
|
|
}
|
|
|
|
[TestMethod]
|
|
[DeploymentItem(@"TeltonikaV2Error.json")]
|
|
public void Parse_Teltonika_Error()
|
|
{
|
|
string device = "testdevice";
|
|
string location = "somewhere";
|
|
|
|
var myfile = "TeltonikaV2Error.json";
|
|
Assert.IsTrue(File.Exists(myfile), "Deployment failed: {0} did not get deployed.", myfile);
|
|
string json = File.ReadAllText(myfile);
|
|
Debug.WriteLine(json);
|
|
|
|
TeltonikaMessageV2? message = MQTTDeviceMessage.Deserialize<TeltonikaMessageV2>(json, device, location);
|
|
Assert.IsNotNull(message);
|
|
Assert.IsInstanceOfType<TeltonikaMessageV2>(message);
|
|
|
|
Assert.AreEqual(device, message.Device);
|
|
Assert.AreEqual(location, message.Location);
|
|
|
|
//Temp
|
|
Assert.IsNotNull(message.GSM);
|
|
Assert.AreEqual(470, message.GSM.Temperature);
|
|
Assert.AreEqual(47.0, message.GSM.TempValue());
|
|
Assert.AreEqual("47℃", message.GSM.TempString());
|
|
message.GSM.Temperature = null;
|
|
Assert.IsNull(message.GSM.Temperature);
|
|
Assert.AreEqual(0, message.GSM.TempValue());
|
|
Assert.AreEqual("??℃", message.GSM.TempString());
|
|
|
|
//Time
|
|
Assert.IsNotNull(message.Base);
|
|
Assert.AreEqual((uint)1748264319, message.Base.Time);
|
|
Assert.AreEqual("2025-05-26 14:58:39", message.Base.LocalTime);
|
|
|
|
//Usage
|
|
Assert.IsNotNull(message.Usage);
|
|
Assert.AreEqual((UInt64)1450717947, message.Usage.Rx);
|
|
Assert.AreEqual((UInt64)2629954194, message.Usage.Tx);
|
|
|
|
//RSSI
|
|
Assert.AreEqual(0, message.GSM.RSSI);
|
|
|
|
//WanIp
|
|
Assert.IsNotNull(message.GSM.IpV4);
|
|
Assert.AreEqual("178.225.152.54", message.GSM.IpV4[0]);
|
|
}
|
|
}
|
|
}
|