Files
firebase-ios-sdk/Firestore/Example/Tests/Local/StringViewTests.mm
T
rsgowman 4ec5f00b1d Fix StringView to properly convert NSStrings (#509)
NSStrings are utf16, so NSString::length returns the number of utf16
characters present in the string. When the string is entirely made up of
US-ASCII characters, everything's fine. But when characters requiring 16
bits are present, the size calculations were incorrect.

Fixed by calculating the length based on the destination character set
(i.e. UTF8).
2017-11-30 13:41:26 -05:00

48 lines
1.7 KiB
Plaintext

/*
* Copyright 2017 Google
*
* 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.
*/
#import "Firestore/Source/Local/StringView.h"
#import <XCTest/XCTest.h>
#include <leveldb/slice.h>
using Firestore::StringView;
#define ASSERT_NSSTRING_TO_STRINGVIEW_AND_BACK_OK( nsstr ) \
StringView sv(nsstr); \
leveldb::Slice slice = sv; \
NSString *afterConversion = [[NSString alloc] initWithBytes:slice.data() \
length:slice.size() \
encoding:NSUTF8StringEncoding]; \
XCTAssertEqualObjects(afterConversion, nsstr);
@interface StringViewTests : XCTestCase
@end
@implementation StringViewTests
- (void)testStringViewNSStringToSliceWithUSAscii {
NSString *usAsciiChars = @"abcdefg ABCDEFG 12345 !@#$%";
ASSERT_NSSTRING_TO_STRINGVIEW_AND_BACK_OK(usAsciiChars);
}
- (void)testStringViewNSStringToSliceWithNonUSAscii {
NSString *nonUsAsciiChars = @"ó¹";
ASSERT_NSSTRING_TO_STRINGVIEW_AND_BACK_OK(nonUsAsciiChars);
}
@end