summaryrefslogtreecommitdiffstats
path: root/macosx/HandBrakeKitTests/HBDictTests.m
diff options
context:
space:
mode:
Diffstat (limited to 'macosx/HandBrakeKitTests/HBDictTests.m')
-rw-r--r--macosx/HandBrakeKitTests/HBDictTests.m100
1 files changed, 100 insertions, 0 deletions
diff --git a/macosx/HandBrakeKitTests/HBDictTests.m b/macosx/HandBrakeKitTests/HBDictTests.m
new file mode 100644
index 000000000..905426488
--- /dev/null
+++ b/macosx/HandBrakeKitTests/HBDictTests.m
@@ -0,0 +1,100 @@
+//
+// HBDictTests.m
+// HandBrake
+//
+// Created by Damiano Galassi on 01/03/16.
+//
+//
+
+#import <XCTest/XCTest.h>
+#import "NSDictionary+HBAdditions.h"
+#include "hb.h"
+
+@interface HBDictTests : XCTestCase
+
+@property (nonatomic, strong) NSDictionary *dict;
+
+@end
+
+@implementation HBDictTests
+
+- (void)setUp
+{
+ [super setUp];
+ self.dict = @{@"DoubleKey": @(20.3),
+ @"StringKey": @"miao",
+ @"BoolKey": @YES,
+ @"ArrayKey": @[@"First", @"Second", @20]};
+}
+
+- (void)tearDown
+{
+ self.dict = nil;
+ [super tearDown];
+}
+
+- (void)testNSDictionaryToHBDict
+{
+ hb_dict_t *hbdict = self.dict.hb_value;
+
+ double doubleValue = hb_value_get_double(hb_dict_get(hbdict, "DoubleKey"));
+ XCTAssertEqual(doubleValue, [self.dict[@"DoubleKey"] doubleValue]);
+
+ const char *stringValue = hb_value_get_string(hb_dict_get(hbdict, "StringKey"));
+ XCTAssertEqualObjects(@(stringValue), self.dict[@"StringKey"]);
+
+ BOOL boolValue = (BOOL)hb_value_get_bool(hb_dict_get(hbdict, "BoolKey"));
+ XCTAssertEqual(boolValue, [self.dict[@"BoolKey"] boolValue]);
+
+ hb_value_array_t *array = hb_dict_get(hbdict, "ArrayKey");
+
+ size_t count = hb_value_array_len(array);
+ XCTAssertEqual(count, [self.dict[@"ArrayKey"] count]);
+
+ const char *arrayString = hb_value_get_string(hb_value_array_get(array, 0));
+ XCTAssertEqualObjects(@(arrayString), self.dict[@"ArrayKey"][0]);
+
+ long long arrayInt = hb_value_get_int(hb_value_array_get(array, 2));
+ XCTAssertEqual(arrayInt, [self.dict[@"ArrayKey"][2] integerValue]);
+
+ hb_dict_free(&hbdict);
+}
+
+- (void)testNSDictionaryToHBDictToNSDictionary
+{
+ hb_dict_t *hbdict = self.dict.hb_value;
+ NSDictionary *result = [[NSDictionary alloc] initWithHBDict:hbdict];
+
+ XCTAssertEqualObjects(result[@"DoubleKey"], self.dict[@"DoubleKey"]);
+ XCTAssertEqualObjects(result[@"StringKey"], self.dict[@"StringKey"]);
+ XCTAssertEqualObjects(result[@"BoolKey"], self.dict[@"BoolKey"]);
+ XCTAssertEqualObjects(result[@"ArrayKey"], self.dict[@"ArrayKey"]);
+}
+
+- (void)testPerformanceHBDict
+{
+ NSDictionary *dict = self.dict;
+
+ [self measureBlock:^{
+ for (int i = 0; i < 10000; i++)
+ {
+ hb_dict_t *result = dict.hb_value;
+ hb_dict_free(&result);
+ }
+ }];
+}
+
+- (void)testPerformanceNSDictionary
+{
+ NSDictionary *dict = self.dict;
+ hb_dict_t *hbdict = dict.hb_value;
+
+ [self measureBlock:^{
+ for (int i = 0; i < 10000; i++)
+ {
+ __unused NSDictionary *result = [[NSDictionary alloc] initWithHBDict:hbdict];
+ }
+ }];
+}
+
+@end