Support different Sensor update types
This commit is contained in:
parent
ff07551a59
commit
09f7e55b4e
20 changed files with 258 additions and 41 deletions
|
|
@ -219,6 +219,161 @@ private slots:
|
|||
QVERIFY(audio.type == Sensor::TYPE_AUDIO_OUTPUT);
|
||||
}
|
||||
|
||||
void testSensorStoreUserUpdateUpdatesNameAndHidden()
|
||||
{
|
||||
// Create a SensorStore
|
||||
SensorStore store;
|
||||
store.getSensors()->clear();
|
||||
|
||||
// Add initial sensor
|
||||
Sensor initialSensor(Sensor::TYPE_TEMPERATURE, 1, 20.0, "Initial Name", false);
|
||||
store.sensorGotState(initialSensor, SENSOR_UPDATE_BACKEND);
|
||||
|
||||
// Verify initial state
|
||||
std::vector<Sensor>* sensors = store.getSensors();
|
||||
QVERIFY(sensors->size() == 1);
|
||||
QVERIFY(sensors->at(0).name == "Initial Name");
|
||||
QVERIFY(sensors->at(0).hidden == false);
|
||||
|
||||
// Send USER update with new name and hidden state
|
||||
Sensor userUpdate(Sensor::TYPE_TEMPERATURE, 1, 25.0, "New Name", true);
|
||||
store.sensorGotState(userUpdate, SENSOR_UPDATE_USER);
|
||||
|
||||
// Verify name and hidden were updated
|
||||
QVERIFY(sensors->size() == 1);
|
||||
QVERIFY(sensors->at(0).name == "New Name");
|
||||
QVERIFY(sensors->at(0).hidden == true);
|
||||
QVERIFY(sensors->at(0).field == 25.0);
|
||||
}
|
||||
|
||||
void testSensorStoreNonUserUpdateIgnoresNameAndHidden()
|
||||
{
|
||||
// Create a SensorStore
|
||||
SensorStore store;
|
||||
store.getSensors()->clear();
|
||||
|
||||
// Add initial sensor
|
||||
Sensor initialSensor(Sensor::TYPE_TEMPERATURE, 1, 20.0, "Initial Name", false);
|
||||
store.sensorGotState(initialSensor, SENSOR_UPDATE_BACKEND);
|
||||
|
||||
// Verify initial state
|
||||
std::vector<Sensor>* sensors = store.getSensors();
|
||||
QVERIFY(sensors->size() == 1);
|
||||
QVERIFY(sensors->at(0).name == "Initial Name");
|
||||
QVERIFY(sensors->at(0).hidden == false);
|
||||
|
||||
// Send BACKEND update with new name and hidden state
|
||||
Sensor backendUpdate(Sensor::TYPE_TEMPERATURE, 1, 25.0, "Backend Name", true);
|
||||
store.sensorGotState(backendUpdate, SENSOR_UPDATE_BACKEND);
|
||||
|
||||
// Verify name and hidden were NOT updated
|
||||
QVERIFY(sensors->size() == 1);
|
||||
QVERIFY(sensors->at(0).name == "Initial Name");
|
||||
QVERIFY(sensors->at(0).hidden == false);
|
||||
QVERIFY(sensors->at(0).field == 25.0);
|
||||
}
|
||||
|
||||
void testSensorStoreUserUpdateUpdatesKnownSensors()
|
||||
{
|
||||
// Create a SensorStore
|
||||
SensorStore store;
|
||||
store.getSensors()->clear();
|
||||
|
||||
// Add initial sensor
|
||||
Sensor initialSensor(Sensor::TYPE_TEMPERATURE, 1, 20.0, "Initial Name", false);
|
||||
store.sensorGotState(initialSensor, SENSOR_UPDATE_BACKEND);
|
||||
|
||||
// Send USER update with new name and hidden state
|
||||
Sensor userUpdate(Sensor::TYPE_TEMPERATURE, 1, 25.0, "New Name", true);
|
||||
store.sensorGotState(userUpdate, SENSOR_UPDATE_USER);
|
||||
|
||||
// Store to JSON and reload
|
||||
QJsonObject json;
|
||||
store.store(json);
|
||||
|
||||
SensorStore store2;
|
||||
store2.getSensors()->clear();
|
||||
store2.load(json);
|
||||
|
||||
// Add the sensor again - should use the updated name from knownSensors_
|
||||
Sensor newSensor(Sensor::TYPE_TEMPERATURE, 1, 30.0, "Original Name", false);
|
||||
store2.sensorGotState(newSensor, SENSOR_UPDATE_BACKEND);
|
||||
|
||||
// Verify the name was taken from knownSensors_
|
||||
std::vector<Sensor>* sensors = store2.getSensors();
|
||||
QVERIFY(sensors->size() == 1);
|
||||
QVERIFY(sensors->at(0).name == "New Name");
|
||||
QVERIFY(sensors->at(0).hidden == true);
|
||||
}
|
||||
|
||||
void testSensorStoreNewSensorNotInKnownSensors()
|
||||
{
|
||||
// Create a SensorStore
|
||||
SensorStore store;
|
||||
store.getSensors()->clear();
|
||||
|
||||
// Add a new sensor (not in knownSensors_)
|
||||
Sensor newSensor(Sensor::TYPE_TEMPERATURE, 99, 25.0, "New Sensor Name", true);
|
||||
store.sensorGotState(newSensor, SENSOR_UPDATE_BACKEND);
|
||||
|
||||
// Verify sensor was added with its original name
|
||||
std::vector<Sensor>* sensors = store.getSensors();
|
||||
QVERIFY(sensors->size() == 1);
|
||||
QVERIFY(sensors->at(0).name == "New Sensor Name");
|
||||
QVERIFY(sensors->at(0).hidden == true);
|
||||
}
|
||||
|
||||
void testSensorStoreNewSensorInKnownSensors()
|
||||
{
|
||||
// Create a SensorStore
|
||||
SensorStore store;
|
||||
store.getSensors()->clear();
|
||||
|
||||
// Load known sensors
|
||||
QJsonObject json;
|
||||
QJsonArray sensorsArray;
|
||||
QJsonObject knownSensor;
|
||||
knownSensor["SensorType"] = Sensor::TYPE_TEMPERATURE;
|
||||
knownSensor["Id"] = 99;
|
||||
knownSensor["Name"] = "Known Sensor Name";
|
||||
knownSensor["Hidden"] = true;
|
||||
sensorsArray.append(knownSensor);
|
||||
json["Sensors"] = sensorsArray;
|
||||
store.load(json);
|
||||
|
||||
// Add a new sensor that matches knownSensors_
|
||||
Sensor newSensor(Sensor::TYPE_TEMPERATURE, 99, 25.0, "Original Name", false);
|
||||
store.sensorGotState(newSensor, SENSOR_UPDATE_BACKEND);
|
||||
|
||||
// Verify name was overridden from knownSensors_
|
||||
std::vector<Sensor>* sensors = store.getSensors();
|
||||
QVERIFY(sensors->size() == 1);
|
||||
QVERIFY(sensors->at(0).name == "Known Sensor Name");
|
||||
QVERIFY(sensors->at(0).hidden == true);
|
||||
}
|
||||
|
||||
void testSensorStoreRemoteUpdateIgnored()
|
||||
{
|
||||
// Create a SensorStore
|
||||
SensorStore store;
|
||||
store.getSensors()->clear();
|
||||
|
||||
// Add initial sensor
|
||||
Sensor initialSensor(Sensor::TYPE_TEMPERATURE, 1, 20.0, "Initial Name", false);
|
||||
store.sensorGotState(initialSensor, SENSOR_UPDATE_BACKEND);
|
||||
|
||||
// Send REMOTE update with new name and hidden state
|
||||
Sensor remoteUpdate(Sensor::TYPE_TEMPERATURE, 1, 25.0, "Remote Name", true);
|
||||
store.sensorGotState(remoteUpdate, SENSOR_UPDATE_REMOTE);
|
||||
|
||||
// Verify name and hidden were NOT updated
|
||||
std::vector<Sensor>* sensors = store.getSensors();
|
||||
QVERIFY(sensors->size() == 1);
|
||||
QVERIFY(sensors->at(0).name == "Initial Name");
|
||||
QVERIFY(sensors->at(0).hidden == false);
|
||||
QVERIFY(sensors->at(0).field == 25.0);
|
||||
}
|
||||
|
||||
void cleanupTestCase()
|
||||
{
|
||||
// Cleanup after all tests
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue