Fix for x86_64 build fail
[platform/upstream/connectedhomeip.git] / src / darwin / Framework / CHIPTests / CHIPSetupPayloadParserTests.m
1 //
2 //  CHIPSetupPayloadParserTests.m
3 //  CHIPQRCodeReaderTests
4 /**
5  *
6  *    Copyright (c) 2020 Project CHIP Authors
7  *
8  *    Licensed under the Apache License, Version 2.0 (the "License");
9  *    you may not use this file except in compliance with the License.
10  *    You may obtain a copy of the License at
11  *
12  *        http://www.apache.org/licenses/LICENSE-2.0
13  *
14  *    Unless required by applicable law or agreed to in writing, software
15  *    distributed under the License is distributed on an "AS IS" BASIS,
16  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  *    See the License for the specific language governing permissions and
18  *    limitations under the License.
19  */
20 // module headers
21 #import "CHIPManualSetupPayloadParser.h"
22 #import "CHIPQRCodeSetupPayloadParser.h"
23 #import "CHIPSetupPayload.h"
24
25 // additional includes
26 #import "CHIPError.h"
27
28 // system dependencies
29 #import <XCTest/XCTest.h>
30
31 @interface CHIPSetupPayloadParserTests : XCTestCase
32
33 @end
34
35 @implementation CHIPSetupPayloadParserTests
36
37 - (void)testManualParser
38 {
39     NSError * error;
40     CHIPManualSetupPayloadParser * parser =
41         [[CHIPManualSetupPayloadParser alloc] initWithDecimalStringRepresentation:@"000003949100001000011"];
42     CHIPSetupPayload * payload = [parser populatePayload:&error];
43
44     XCTAssertNotNil(payload);
45     XCTAssertNil(error);
46
47     XCTAssertEqual(payload.discriminator.unsignedIntegerValue, 1);
48     XCTAssertEqual(payload.setUpPINCode.unsignedIntegerValue, 1234);
49     XCTAssertEqual(payload.vendorID.unsignedIntegerValue, 1);
50     XCTAssertEqual(payload.productID.unsignedIntegerValue, 1);
51     XCTAssertTrue(payload.requiresCustomFlow);
52     XCTAssertEqual(payload.version.unsignedIntegerValue, 0);
53     XCTAssertEqual(payload.rendezvousInformation, kRendezvousInformationNone);
54 }
55
56 - (void)testManualParser_Error
57 {
58     NSError * error;
59     CHIPManualSetupPayloadParser * parser = [[CHIPManualSetupPayloadParser alloc] initWithDecimalStringRepresentation:@""];
60     CHIPSetupPayload * payload = [parser populatePayload:&error];
61
62     XCTAssertNil(payload);
63     XCTAssertEqual(error.code, CHIPErrorCodeInvalidStringLength);
64 }
65
66 - (void)testQRCodeParser_Error
67 {
68     NSError * error;
69     CHIPQRCodeSetupPayloadParser * parser =
70         [[CHIPQRCodeSetupPayloadParser alloc] initWithBase41Representation:@"CH:B20800G.0G8G000"];
71     CHIPSetupPayload * payload = [parser populatePayload:&error];
72
73     XCTAssertNil(payload);
74     XCTAssertEqual(error.code, CHIPErrorCodeInvalidArgument);
75 }
76
77 - (void)testQRCodeParser
78 {
79     NSError * error;
80     CHIPQRCodeSetupPayloadParser * parser =
81         [[CHIPQRCodeSetupPayloadParser alloc] initWithBase41Representation:@"CH:J20800G008008000"];
82     CHIPSetupPayload * payload = [parser populatePayload:&error];
83
84     XCTAssertNotNil(payload);
85     XCTAssertNil(error);
86
87     XCTAssertEqual(payload.discriminator.unsignedIntegerValue, 128);
88     XCTAssertEqual(payload.setUpPINCode.unsignedIntegerValue, 2048);
89     XCTAssertEqual(payload.vendorID.unsignedIntegerValue, 12);
90     XCTAssertEqual(payload.productID.unsignedIntegerValue, 1);
91     XCTAssertFalse(payload.requiresCustomFlow);
92     XCTAssertEqual(payload.version.unsignedIntegerValue, 5);
93     XCTAssertEqual(payload.rendezvousInformation, kRendezvousInformationWiFi);
94 }
95
96 - (void)testQRCodeParserWithOptionalData
97 {
98     NSError * error;
99     CHIPQRCodeSetupPayloadParser * parser =
100         [[CHIPQRCodeSetupPayloadParser alloc] initWithBase41Representation:@"CH:J20800G008008006DL200UOGMHARTHOMJ300IDL530.I7"];
101     CHIPSetupPayload * payload = [parser populatePayload:&error];
102
103     XCTAssertNotNil(payload);
104     XCTAssertNil(error);
105
106     XCTAssertEqual(payload.version.unsignedIntegerValue, 5);
107     XCTAssertEqual(payload.discriminator.unsignedIntegerValue, 128);
108     XCTAssertEqual(payload.setUpPINCode.unsignedIntegerValue, 2048);
109     XCTAssertEqual(payload.vendorID.unsignedIntegerValue, 12);
110     XCTAssertEqual(payload.productID.unsignedIntegerValue, 1);
111     XCTAssertFalse(payload.requiresCustomFlow);
112     XCTAssertEqual(payload.rendezvousInformation, kRendezvousInformationWiFi);
113     XCTAssertTrue([payload.serialNumber isEqualToString:@"1"]);
114
115     NSArray<CHIPOptionalQRCodeInfo *> * vendorOptionalInfo = [payload getAllOptionalVendorData:&error];
116     XCTAssertNil(error);
117     XCTAssertEqual([vendorOptionalInfo count], 2);
118     for (CHIPOptionalQRCodeInfo * info in vendorOptionalInfo) {
119         if (info.tag.intValue == 2) {
120             XCTAssertEqual(info.infoType.intValue, kOptionalQRCodeInfoTypeString);
121             XCTAssertTrue([info.stringValue isEqualToString:@"myData"]);
122         } else if (info.tag.intValue == 3) {
123             XCTAssertEqual(info.infoType.intValue, kOptionalQRCodeInfoTypeInt32);
124             XCTAssertEqual(info.integerValue.intValue, 12);
125         }
126     }
127 }
128
129 @end