Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ local CLUSTER_SUBSCRIBE_LIST ={
}

local function test_init()
test.set_rpc_version(0)
local subscribe_request = CLUSTER_SUBSCRIBE_LIST[1]:subscribe(mock_device)
for i, clus in ipairs(CLUSTER_SUBSCRIBE_LIST) do
if i > 1 then subscribe_request:merge(clus:subscribe(mock_device)) end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,13 +74,15 @@ local CLUSTER_SUBSCRIBE_LIST ={
}

local function test_init()
test.disable_startup_messages()
local subscribe_request = CLUSTER_SUBSCRIBE_LIST[1]:subscribe(mock_device)
for i, clus in ipairs(CLUSTER_SUBSCRIBE_LIST) do
if i > 1 then subscribe_request:merge(clus:subscribe(mock_device)) end
end
test.socket.matter:__expect_send({mock_device.id, subscribe_request})
test.mock_device.add_test_device(mock_device)
test.socket.device_lifecycle:__queue_receive({ mock_device.id, "added" })
test.socket.device_lifecycle:__queue_receive({ mock_device.id, "init" })
mock_device:expect_metadata_update({ profile = "4-button-battery" })
local device_info_copy = utils.deep_copy(mock_device.raw_st_data)
device_info_copy.profile.id = "4-buttons-battery"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,15 @@ local mock_device_no_battery_record = {
local mock_device_no_battery = test.mock_device.build_test_matter_device(mock_device_no_battery_record)

local function test_init()
test.disable_startup_messages()
local subscribe_request = clusters.DoorLock.attributes.LockState:subscribe(mock_device)
subscribe_request:merge(clusters.PowerSource.attributes.BatPercentRemaining:subscribe(mock_device))
subscribe_request:merge(clusters.DoorLock.events.DoorLockAlarm:subscribe(mock_device))
subscribe_request:merge(clusters.DoorLock.events.LockOperation:subscribe(mock_device))
subscribe_request:merge(clusters.DoorLock.events.LockUserChange:subscribe(mock_device))
test.socket["matter"]:__expect_send({mock_device.id, subscribe_request})
test.mock_device.add_test_device(mock_device)
test.socket.device_lifecycle:__queue_receive({ mock_device.id, "init" })
test.socket.device_lifecycle:__queue_receive({ mock_device.id, "doConfigure" })
mock_device:expect_metadata_update({ provisioning_state = "PROVISIONED" })
local read_attribute_list = clusters.PowerSource.attributes.AttributeList:read()
Expand All @@ -82,13 +84,15 @@ end
test.set_test_init_function(test_init)

local function test_init_no_battery()
test.disable_startup_messages()
local subscribe_request = clusters.DoorLock.attributes.LockState:subscribe(mock_device_no_battery)
subscribe_request:merge(clusters.PowerSource.attributes.BatPercentRemaining:subscribe(mock_device))
subscribe_request:merge(clusters.DoorLock.events.DoorLockAlarm:subscribe(mock_device_no_battery))
subscribe_request:merge(clusters.DoorLock.events.LockOperation:subscribe(mock_device_no_battery))
subscribe_request:merge(clusters.DoorLock.events.LockUserChange:subscribe(mock_device_no_battery))
test.socket["matter"]:__expect_send({mock_device_no_battery.id, subscribe_request})
test.mock_device.add_test_device(mock_device_no_battery)
test.socket.device_lifecycle:__queue_receive({ mock_device_no_battery.id, "init" })
test.socket.device_lifecycle:__queue_receive({ mock_device_no_battery.id, "doConfigure" })
mock_device_no_battery:expect_metadata_update({ profile = "base-lock-nobattery" })
mock_device_no_battery:expect_metadata_update({ provisioning_state = "PROVISIONED" })
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ local cluster_subscribe_list_humidity_battery = {
}

local function test_init()
test.disable_startup_messages()
local subscribe_request_humidity_battery = cluster_subscribe_list_humidity_battery[1]:subscribe(mock_device_humidity_battery)
for i, cluster in ipairs(cluster_subscribe_list_humidity_battery) do
if i > 1 then
Expand All @@ -67,6 +68,7 @@ local function test_init()
test.mock_device.add_test_device(mock_device_humidity_battery)

test.socket.device_lifecycle:__queue_receive({ mock_device_humidity_battery.id, "added" })
test.socket.device_lifecycle:__queue_receive({ mock_device_humidity_battery.id, "init" })
local read_attribute_list = clusters.PowerSource.attributes.AttributeList:read()
test.socket.matter:__expect_send({mock_device_humidity_battery.id, read_attribute_list})
test.socket.device_lifecycle:__queue_receive({ mock_device_humidity_battery.id, "doConfigure" })
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ local cluster_subscribe_list_temp_humidity = {
}

local function test_init_humidity_battery()
test.disable_startup_messages()
local subscribe_request_humidity_battery = cluster_subscribe_list_humidity_battery[1]:subscribe(mock_device_humidity_battery)
for i, cluster in ipairs(cluster_subscribe_list_humidity_battery) do
if i > 1 then
Expand All @@ -136,13 +137,15 @@ local function test_init_humidity_battery()
test.mock_device.add_test_device(mock_device_humidity_battery)

test.socket.device_lifecycle:__queue_receive({ mock_device_humidity_battery.id, "added" })
test.socket.device_lifecycle:__queue_receive({ mock_device_humidity_battery.id, "init" })
test.socket.device_lifecycle:__queue_receive({ mock_device_humidity_battery.id, "doConfigure" })
mock_device_humidity_battery:expect_metadata_update({ provisioning_state = "PROVISIONED" })
local read_attribute_list = clusters.PowerSource.attributes.AttributeList:read()
test.socket.matter:__expect_send({mock_device_humidity_battery.id, read_attribute_list})
end

local function test_init_humidity_no_battery()
test.disable_startup_messages()
local subscribe_request_humidity_no_battery = cluster_subscribe_list_humidity_no_battery[1]:subscribe(mock_device_humidity_no_battery)
for i, cluster in ipairs(cluster_subscribe_list_humidity_no_battery) do
if i > 1 then
Expand All @@ -154,12 +157,14 @@ local function test_init_humidity_no_battery()
test.mock_device.add_test_device(mock_device_humidity_no_battery)

test.socket.device_lifecycle:__queue_receive({ mock_device_humidity_no_battery.id, "added" })
test.socket.device_lifecycle:__queue_receive({ mock_device_humidity_no_battery.id, "init" })
test.socket.device_lifecycle:__queue_receive({ mock_device_humidity_no_battery.id, "doConfigure" })
mock_device_humidity_no_battery:expect_metadata_update({ profile = "humidity" })
mock_device_humidity_no_battery:expect_metadata_update({ provisioning_state = "PROVISIONED" })
end

local function test_init_temp_humidity()
test.disable_startup_messages()
local subscribe_request_temp_humidity = cluster_subscribe_list_temp_humidity[1]:subscribe(mock_device_temp_humidity)
for i, cluster in ipairs(cluster_subscribe_list_temp_humidity) do
if i > 1 then
Expand All @@ -171,6 +176,7 @@ local function test_init_temp_humidity()
test.mock_device.add_test_device(mock_device_temp_humidity)

test.socket.device_lifecycle:__queue_receive({ mock_device_temp_humidity.id, "added" })
test.socket.device_lifecycle:__queue_receive({ mock_device_temp_humidity.id, "init" })
test.socket.device_lifecycle:__queue_receive({ mock_device_temp_humidity.id, "doConfigure" })
mock_device_temp_humidity:expect_metadata_update({ profile = "temperature-humidity" })
mock_device_temp_humidity:expect_metadata_update({ provisioning_state = "PROVISIONED" })
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,15 @@ local cluster_subscribe_list = {
}

local function test_init()
test.disable_startup_messages()
local subscribe_request = cluster_subscribe_list[1]:subscribe(mock_device)
for i, cluster in ipairs(cluster_subscribe_list) do
if i > 1 then
subscribe_request:merge(cluster:subscribe(mock_device))
end
end
test.socket.device_lifecycle:__queue_receive({ mock_device.id, "added" })
test.socket.device_lifecycle:__queue_receive({ mock_device.id, "init" })
test.socket.matter:__expect_send({mock_device.id, subscribe_request})
test.socket.device_lifecycle:__queue_receive({ mock_device.id, "doConfigure" })
local read_attribute_list = clusters.PowerSource.attributes.AttributeList:read()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,19 +117,22 @@ local function configure_buttons()
end

local function test_init()
test.disable_startup_messages()
local subscribe_request = CLUSTER_SUBSCRIBE_LIST[1]:subscribe(mock_device)
for i, clus in ipairs(CLUSTER_SUBSCRIBE_LIST) do
if i > 1 then subscribe_request:merge(clus:subscribe(mock_device)) end
end
test.socket.matter:__expect_send({mock_device.id, subscribe_request})
test.socket.device_lifecycle:__queue_receive({ mock_device.id, "added" })
test.socket.device_lifecycle:__queue_receive({ mock_device.id, "init" })
mock_device:set_field("__ELECTRICAL_TOPOLOGY", {topology = false, tags_on_ep = {}}, {persist = false}) -- since we're assuming this would have happened during device_added in this case.
test.socket.matter:__expect_send({mock_device.id, subscribe_request})
test.socket.device_lifecycle:__queue_receive({ mock_device.id, "doConfigure" })
mock_device:expect_metadata_update({ provisioning_state = "PROVISIONED" })
test.mock_device.add_test_device(mock_device)
local read_attribute_list = clusters.PowerSource.attributes.AttributeList:read()
test.socket.matter:__expect_send({mock_device.id, read_attribute_list})
mock_device:expect_metadata_update({ provisioning_state = "PROVISIONED" })
test.mock_device.add_test_device(mock_device)
configure_buttons()
test.socket.device_lifecycle:__queue_receive({ mock_device.id, "added" })

test.socket.matter:__expect_send({mock_device.id, subscribe_request})
local device_info_copy = utils.deep_copy(mock_device.raw_st_data)
device_info_copy.profile.id = "5-buttons-battery"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -193,12 +193,17 @@ local function configure_buttons()
end

local function test_init()
test.disable_startup_messages()
local subscribe_request = CLUSTER_SUBSCRIBE_LIST[1]:subscribe(mock_device)
for i, clus in ipairs(CLUSTER_SUBSCRIBE_LIST) do
if i > 1 then subscribe_request:merge(clus:subscribe(mock_device)) end
end
test.socket.matter:__expect_send({mock_device.id, subscribe_request})
mock_device:set_field("__ELECTRICAL_TOPOLOGY", {topology = false, tags_on_ep = {}}, {persist = false}) -- since we're assuming this would have happened during device_added in this case.
test.socket.device_lifecycle:__queue_receive({ mock_device.id, "added" })
configure_buttons()
test.socket.matter:__expect_send({mock_device.id, subscribe_request})
test.socket.device_lifecycle:__queue_receive({ mock_device.id, "init" })
test.socket.device_lifecycle:__queue_receive({ mock_device.id, "doConfigure" })
mock_device:expect_metadata_update({ profile = "light-level-3-button" })
mock_device:expect_metadata_update({ provisioning_state = "PROVISIONED" })
Expand All @@ -217,9 +222,7 @@ local function test_init()
parent_device_id = mock_device.id,
parent_assigned_child_key = string.format("%d", mock_device_ep5)
})
test.socket.device_lifecycle:__queue_receive({ mock_device.id, "added" })
configure_buttons()
test.socket.matter:__expect_send({mock_device.id, subscribe_request})

end

local function test_init_mcd_unsupported_switch_device_type()
Expand All @@ -236,6 +239,8 @@ local function test_init_mcd_unsupported_switch_device_type()
subscribe_request:merge(cluster:subscribe(mock_device_mcd_unsupported_switch_device_type))
end
end
test.socket.device_lifecycle:__queue_receive({ mock_device_mcd_unsupported_switch_device_type.id, "added" })
test.socket.device_lifecycle:__queue_receive({ mock_device_mcd_unsupported_switch_device_type.id, "init" })
test.socket.matter:__expect_send({mock_device_mcd_unsupported_switch_device_type.id, subscribe_request})
mock_device_mcd_unsupported_switch_device_type:set_field("__ELECTRICAL_TOPOLOGY", {topology = false, tags_on_ep = {}}, {persist = false}) -- since we're assuming this would have happened during device_added in this case.
test.socket.device_lifecycle:__queue_receive({ mock_device_mcd_unsupported_switch_device_type.id, "doConfigure" })
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ local device_desc = {
}

local test_init_common = function(device)
test.disable_startup_messages()
local cluster_subscribe_list = {
clusters.Thermostat.attributes.SystemMode,
clusters.Thermostat.attributes.ControlSequenceOfOperation,
Expand All @@ -109,6 +110,7 @@ local test_init_common = function(device)
end
test.socket.matter:__expect_send({ device.id, subscribe_request })
test.socket.device_lifecycle:__queue_receive({ device.id, "added" })
test.socket.device_lifecycle:__queue_receive({ device.id, "init" })
local read_request_on_added = {
clusters.Thermostat.attributes.ControlSequenceOfOperation,
clusters.FanControl.attributes.FanModeSequence,
Expand Down Expand Up @@ -181,6 +183,11 @@ test.register_message_test(
clusters.Thermostat.server.attributes.OccupiedHeatingSetpoint:build_test_report_data(mock_device, THERMOSTAT_ONE_EP, 40*100)
}
},
{
channel = "capability",
direction = "send",
message = mock_device:generate_test_message("thermostatOne", capabilities.thermostatHeatingSetpoint.heatingSetpointRange({unit="C", value={maximum=40.0, minimum=5.0, step=0.1}}))
},
{
channel = "capability",
direction = "send",
Expand All @@ -194,6 +201,11 @@ test.register_message_test(
clusters.Thermostat.server.attributes.OccupiedHeatingSetpoint:build_test_report_data(mock_device, THERMOSTAT_TWO_EP, 23*100)
}
},
{
channel = "capability",
direction = "send",
message = mock_device:generate_test_message("thermostatTwo", capabilities.thermostatHeatingSetpoint.heatingSetpointRange({unit="C", value={maximum=40.0, minimum=5.0, step=0.1}}))
},
{
channel = "capability",
direction = "send",
Expand All @@ -213,6 +225,11 @@ test.register_message_test(
clusters.Thermostat.server.attributes.OccupiedCoolingSetpoint:build_test_report_data(mock_device, THERMOSTAT_ONE_EP, 39*100)
}
},
{
channel = "capability",
direction = "send",
message = mock_device:generate_test_message("thermostatOne", capabilities.thermostatCoolingSetpoint.coolingSetpointRange({unit="C", value={maximum=40.0, minimum=5.0, step=0.1}}))
},
{
channel = "capability",
direction = "send",
Expand All @@ -226,6 +243,11 @@ test.register_message_test(
clusters.Thermostat.server.attributes.OccupiedCoolingSetpoint:build_test_report_data(mock_device, THERMOSTAT_TWO_EP, 19*100)
}
},
{
channel = "capability",
direction = "send",
message = mock_device:generate_test_message("thermostatTwo", capabilities.thermostatCoolingSetpoint.coolingSetpointRange({unit="C", value={maximum=40.0, minimum=5.0, step=0.1}}))
},
{
channel = "capability",
direction = "send",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,15 +70,7 @@ local cluster_subscribe = {
}

local function test_init()
local subscribe_request= cluster_subscribe[1]:subscribe(mock_device)
for i, cluster in ipairs(cluster_subscribe) do
if i > 1 then
subscribe_request:merge(cluster:subscribe(mock_device))
end
end

test.socket.matter:__expect_send({mock_device.id, subscribe_request})
test.mock_device.add_test_device(mock_device)
test.disable_startup_messages()

test.socket.device_lifecycle:__queue_receive({ mock_device.id, "added" })
local read_req = clusters.Thermostat.attributes.ControlSequenceOfOperation:read()
Expand All @@ -89,6 +81,18 @@ local function test_init()
read_req:merge(clusters.Thermostat.attributes.AttributeList:read())
read_req:merge(clusters.PowerSource.attributes.AttributeList:read())
test.socket.matter:__expect_send({mock_device.id, read_req})

test.socket.device_lifecycle:__queue_receive({ mock_device.id, "init" })
local subscribe_request= cluster_subscribe[1]:subscribe(mock_device)
for i, cluster in ipairs(cluster_subscribe) do
if i > 1 then
subscribe_request:merge(cluster:subscribe(mock_device))
end
end

test.socket.matter:__expect_send({mock_device.id, subscribe_request})
test.mock_device.add_test_device(mock_device)

test.socket.device_lifecycle:__queue_receive({ mock_device.id, "doConfigure" })
mock_device:expect_metadata_update({ provisioning_state = "PROVISIONED" })
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,11 @@ test.register_message_test(
clusters.Thermostat.server.attributes.OccupiedHeatingSetpoint:build_test_report_data(mock_device, 1, 40*100)
}
},
{
channel = "capability",
Copy link
Contributor

@ctowns ctowns Apr 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just for clarity - is this (among others) just included now that the RPC is defaulting to 9999, so these RPC dependent changes are now included? @nickolas-deboom

direction = "send",
message = mock_device:generate_test_message("main", capabilities.thermostatHeatingSetpoint.heatingSetpointRange({unit="C", value={maximum=40.0, minimum=5.0, step=0.1}}))
},
{
channel = "capability",
direction = "send",
Expand All @@ -238,6 +243,11 @@ test.register_message_test(
clusters.Thermostat.server.attributes.OccupiedCoolingSetpoint:build_test_report_data(mock_device, 1, 40*100)
}
},
{
channel = "capability",
direction = "send",
message = mock_device:generate_test_message("main", capabilities.thermostatCoolingSetpoint.coolingSetpointRange({unit="C", value={maximum=40.0, minimum=5.0, step=0.1}}))
},
{
channel = "capability",
direction = "send",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,12 @@ test.register_message_test(
clusters.Thermostat.server.attributes.OccupiedHeatingSetpoint:build_test_report_data(mock_device, 3, 40 * 100)
}
},
{
channel = "capability",
direction = "send",
message = mock_device:generate_test_message("main",
capabilities.thermostatHeatingSetpoint.heatingSetpointRange({unit="C", value={maximum=40.0, minimum=5.0, step=0.1}}))
},
{
channel = "capability",
direction = "send",
Expand All @@ -177,6 +183,12 @@ test.register_message_test(
clusters.Thermostat.server.attributes.OccupiedCoolingSetpoint:build_test_report_data(mock_device, 3, 40 * 100)
}
},
{
channel = "capability",
direction = "send",
message = mock_device:generate_test_message("main",
capabilities.thermostatCoolingSetpoint.coolingSetpointRange({unit="C", value={maximum=40.0, minimum=5.0, step=0.1}}))
},
{
channel = "capability",
direction = "send",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,11 @@ test.register_message_test(
clusters.Thermostat.server.attributes.OccupiedHeatingSetpoint:build_test_report_data(mock_device, 1, 70*100)
}
},
{
channel = "capability",
direction = "send",
message = mock_device:generate_test_message("main", capabilities.thermostatHeatingSetpoint.heatingSetpointRange({unit="C", value={maximum=80.0, minimum=30.0, step=0.1}}))
},
{
channel = "capability",
direction = "send",
Expand Down
Loading
Loading