blob: fdc3734ea8dbfb168210df76d3645b4c97152bb1 [file] [log] [blame]
/*
*
* Copyright (c) 2024 Project CHIP Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// module headers
#import <Matter/Matter.h>
#import "MTRMetrics_Internal.h"
// system dependencies
#import <XCTest/XCTest.h>
@interface MTRMetricsTests : XCTestCase
@end
@implementation MTRMetricsTests
- (void)setUp
{
// Per-test setup, runs before each test.
[super setUp];
}
- (void)tearDown
{
// Per-test teardown, runs after each test.
[super tearDown];
}
- (void)test000_SetUp
{
// Nothing to do here; our setUp method handled this already. This test
// just exists to make the setup not look like it's happening inside other
// tests.
}
- (void)test001_TestAllKeys
{
MTRMetrics * metrics = [[MTRMetrics alloc] initWithCapacity:4];
MTRMetricData * metricData1 = [MTRMetricData new];
MTRMetricData * metricData2 = [MTRMetricData new];
MTRMetricData * metricData3 = [MTRMetricData new];
MTRMetricData * metricData4 = [MTRMetricData new];
[metrics setMetricData:metricData1 forKey:@"com.matter.metrics.counter1"];
[metrics setMetricData:metricData2 forKey:@"com.matter.metrics.counter2"];
[metrics setMetricData:metricData3 forKey:@"com.matter.metrics.counter3"];
[metrics setMetricData:metricData4 forKey:@"com.matter.metrics.counter4"];
NSArray<NSString *> * keys = [metrics allKeys];
XCTAssertTrue([keys count] == 4);
XCTAssertTrue([keys containsObject:@"com.matter.metrics.counter1"]);
XCTAssertTrue([keys containsObject:@"com.matter.metrics.counter2"]);
XCTAssertTrue([keys containsObject:@"com.matter.metrics.counter3"]);
XCTAssertTrue([keys containsObject:@"com.matter.metrics.counter4"]);
XCTAssertFalse([keys containsObject:@"com.matter.metrics.counter5"]);
}
- (void)test002_TestOneKey
{
MTRMetrics * metrics = [[MTRMetrics alloc] initWithCapacity:1];
MTRMetricData * metricData1 = [MTRMetricData new];
[metrics setMetricData:metricData1 forKey:@"com.matter.metrics.counter1"];
NSArray<NSString *> * keys = [metrics allKeys];
XCTAssertTrue([keys count] == 1);
XCTAssertTrue([keys containsObject:@"com.matter.metrics.counter1"]);
}
- (void)test003_TestValueForKey
{
MTRMetrics * metrics = [[MTRMetrics alloc] initWithCapacity:1];
MTRMetricData * metricData1 = [MTRMetricData new];
[metrics setMetricData:metricData1 forKey:@"com.matter.metrics.counter1"];
XCTAssertEqualObjects([metrics metricDataForKey:@"com.matter.metrics.counter1"], metricData1);
}
- (void)test004_TestMultipleValueForKeys
{
MTRMetrics * metrics = [[MTRMetrics alloc] initWithCapacity:3];
MTRMetricData * metricData1 = [MTRMetricData new];
MTRMetricData * metricData2 = [MTRMetricData new];
MTRMetricData * metricData3 = [MTRMetricData new];
[metrics setMetricData:metricData1 forKey:@"com.matter.metrics.counter1"];
[metrics setMetricData:metricData2 forKey:@"com.matter.metrics.counter2"];
[metrics setMetricData:metricData3 forKey:@"com.matter.metrics.counter3"];
XCTAssertEqualObjects([metrics metricDataForKey:@"com.matter.metrics.counter1"], metricData1);
XCTAssertEqualObjects([metrics metricDataForKey:@"com.matter.metrics.counter2"], metricData2);
XCTAssertEqualObjects([metrics metricDataForKey:@"com.matter.metrics.counter3"], metricData3);
XCTAssertNotEqualObjects([metrics metricDataForKey:@"com.matter.metrics.counter3"], metricData2);
}
- (void)test005_TestValueRemoval
{
MTRMetrics * metrics = [[MTRMetrics alloc] initWithCapacity:2];
MTRMetricData * metricData1 = [MTRMetricData new];
MTRMetricData * metricData2 = [MTRMetricData new];
[metrics setMetricData:metricData1 forKey:@"com.matter.metrics.counter1"];
[metrics setMetricData:metricData2 forKey:@"com.matter.metrics.counter2"];
NSArray<NSString *> * keys = [metrics allKeys];
XCTAssertTrue([keys count] == 2);
[metrics setMetricData:nil forKey:@"com.matter.metrics.counter2"];
keys = [metrics allKeys];
XCTAssertTrue([keys count] == 1);
XCTAssertTrue([keys containsObject:@"com.matter.metrics.counter1"]);
XCTAssertFalse([keys containsObject:@"com.matter.metrics.counter2"]);
XCTAssertEqualObjects([metrics metricDataForKey:@"com.matter.metrics.counter1"], metricData1);
XCTAssertNotEqualObjects([metrics metricDataForKey:@"com.matter.metrics.counter1"], metricData2);
[metrics setMetricData:nil forKey:@"com.matter.metrics.counter1"];
keys = [metrics allKeys];
XCTAssertTrue([keys count] == 0);
}
- (void)test006_TestUniqueIdentifier
{
MTRMetrics * metrics1 = [[MTRMetrics alloc] initWithCapacity:1];
MTRMetrics * metrics2 = [[MTRMetrics alloc] initWithCapacity:1];
XCTAssertNotNil(metrics1.uniqueIdentifier);
XCTAssertNotNil(metrics2.uniqueIdentifier);
XCTAssertNotEqualObjects(metrics1.uniqueIdentifier, metrics2.uniqueIdentifier);
}
@end