ios/SpectrumKit/SpectrumKitTests/FSPImageSpecificationTests.mm (97 lines of code) (raw):
// Copyright (c) Facebook, Inc. and its affiliates.
//
// This source code is licensed under the MIT license found in the
// LICENSE file in the root directory of this source tree.
#import <XCTest/XCTest.h>
#import <SpectrumKit/FSPImageSpecification.h>
#import <SpectrumKit/FSPImageSpecification_Private.h>
using namespace facebook::spectrum;
@interface FSPImageSpecificationTests : XCTestCase
@end
@implementation FSPImageSpecificationTests
static const CGSize kDefaultSize = CGSizeMake(42.0f, 40.0f);
- (void)testInternalTypeConversion
{
const auto object = makeDefault();
const auto expectedInternalObject = image::Specification{
.size = image::Size{42, 40},
.format = image::formats::Jpeg,
.pixelSpecification = image::pixel::specifications::RGB,
.orientation = image::Orientation::Right,
.chromaSamplingMode = image::ChromaSamplingMode::S444,
};
XCTAssertTrue([object makeInternalImageSpecification] == expectedInternalObject);
}
#pragma mark - Equality
- (void)testIsEqual
{
const auto object = makeDefault();
const auto object2 = makeDefault();
XCTAssertEqualObjects(object, object2);
}
- (void)testIsNotEqualOnDifferentSize
{
const auto object = makeDefault();
const auto object2 = [FSPImageSpecification imageSpecificationWithSize:CGSizeMake(1, 1)
format:FSPEncodedImageFormat.jpeg
pixelSpecification:FSPImagePixelSpecification.rgb
orientation:FSPImageOrientationRight
chromaSamplingMode:FSPImageChromaSamplingMode444
metadata:nil];
XCTAssertNotEqualObjects(object, object2);
}
- (void)testIsNotEqualOnDifferentFormat
{
const auto object = makeDefault();
const auto object2 = [FSPImageSpecification imageSpecificationWithSize:kDefaultSize
format:FSPEncodedImageFormat.png
pixelSpecification:FSPImagePixelSpecification.rgb
orientation:FSPImageOrientationRight
chromaSamplingMode:FSPImageChromaSamplingMode444
metadata:nil];
XCTAssertNotEqualObjects(object, object2);
}
- (void)testIsNotEqualOnDifferentPixelSpecification
{
const auto object = makeDefault();
const auto object2 = [FSPImageSpecification imageSpecificationWithSize:kDefaultSize
format:FSPEncodedImageFormat.jpeg
pixelSpecification:FSPImagePixelSpecification.rgba
orientation:FSPImageOrientationRight
chromaSamplingMode:FSPImageChromaSamplingMode444
metadata:nil];
XCTAssertNotEqualObjects(object, object2);
}
- (void)testIsNotEqualOnDifferentOrientation
{
const auto object = makeDefault();
const auto object2 = [FSPImageSpecification imageSpecificationWithSize:kDefaultSize
format:FSPEncodedImageFormat.jpeg
pixelSpecification:FSPImagePixelSpecification.rgb
orientation:FSPImageOrientationBottom
chromaSamplingMode:FSPImageChromaSamplingMode444
metadata:nil];
XCTAssertNotEqualObjects(object, object2);
}
- (void)testIsNotEqualOnDifferentMetadata
{
const auto object = makeDefault();
const auto metadata = [FSPImageMetadata imageMetadataWithDictionary:@{
(NSString *)kCGImagePropertyTIFFDictionary: @{
(NSString *)kCGImagePropertyTIFFOrientation: @2,
},
}];
const auto object2 = [FSPImageSpecification imageSpecificationWithSize:kDefaultSize
format:FSPEncodedImageFormat.jpeg
pixelSpecification:FSPImagePixelSpecification.rgba
orientation:FSPImageOrientationRight
chromaSamplingMode:FSPImageChromaSamplingMode444
metadata:metadata];
XCTAssertNotEqualObjects(object, object2);
}
static FSPImageSpecification *makeDefault()
{
return [FSPImageSpecification imageSpecificationWithSize:kDefaultSize
format:FSPEncodedImageFormat.jpeg
pixelSpecification:FSPImagePixelSpecification.rgb
orientation:FSPImageOrientationRight
chromaSamplingMode:FSPImageChromaSamplingMode444
metadata:nil];
}
@end