ios/SpectrumKit/SpectrumKitTests/FSPImagePixelSpecificationTests.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/FSPImagePixelSpecification.h>
#import <SpectrumKit/FSPImagePixelSpecification_Private.h>
using namespace facebook::spectrum;
@interface FSPImagePixelSpecificationTests : XCTestCase
@end
@implementation FSPImagePixelSpecificationTests
- (void)testPixelSpecificationConversionNone
{
[self testEqualityOfPixelSpecification:nil internalPixelSpecification:folly::none];
}
- (void)testPixelConversionGray
{
[self testEqualityOfPixelSpecification:FSPImagePixelSpecification.gray internalPixelSpecification:image::pixel::specifications::Gray];
}
- (void)testPixelSpecificationConversionRgb
{
[self testEqualityOfPixelSpecification:FSPImagePixelSpecification.rgb internalPixelSpecification:image::pixel::specifications::RGB];
}
- (void)testPixelSpecificationConversionArgb
{
[self testEqualityOfPixelSpecification:FSPImagePixelSpecification.argb internalPixelSpecification:image::pixel::specifications::ARGB];
}
- (void)testPixelSpecificationConversionRgba
{
[self testEqualityOfPixelSpecification:FSPImagePixelSpecification.rgba internalPixelSpecification:image::pixel::specifications::RGBA];
}
- (void)testPixelSpecificationConversionBgr
{
[self testEqualityOfPixelSpecification:FSPImagePixelSpecification.bgr internalPixelSpecification:image::pixel::specifications::BGR];
}
- (void)testPixelSpecificationConversionAbgr
{
[self testEqualityOfPixelSpecification:FSPImagePixelSpecification.abgr internalPixelSpecification:image::pixel::specifications::ABGR];
}
- (void)testPixelSpecificationConversionBgra
{
[self testEqualityOfPixelSpecification:FSPImagePixelSpecification.bgra internalPixelSpecification:image::pixel::specifications::BGRA];
}
#pragma mark - Copy
- (void)testCopyIsEqual
{
}
#pragma mark - Equality
- (void)testIsEqual
{
XCTAssertEqualObjects(FSPImagePixelSpecification.rgb, FSPImagePixelSpecification.rgb);
}
- (void)testIsNotEqualOnDifferentColorModel
{
const auto object = FSPImagePixelSpecification.rgb;
const auto object2 = [FSPImagePixelSpecification imagePixelSpecificationWithColorModel:FSPImagePixelSpecificationColorModel.gray
bytesPerPixel:3
alphaInfo:FSPImagePixelSpecificationAlphaInfoNone
componentsOrder:FSPImagePixelSpecificationComponentsOrderNatural];
XCTAssertNotEqualObjects(object, object2);
}
- (void)testIsNotEqualOnDifferentBytesPerPixel
{
const auto object = FSPImagePixelSpecification.rgb;
const auto object2 = [FSPImagePixelSpecification imagePixelSpecificationWithColorModel:FSPImagePixelSpecificationColorModel.rgb
bytesPerPixel:4
alphaInfo:FSPImagePixelSpecificationAlphaInfoNone
componentsOrder:FSPImagePixelSpecificationComponentsOrderNatural];
XCTAssertNotEqualObjects(object, object2);
}
- (void)testIsNotEqualOnDifferentAlphaInfo
{
const auto object = FSPImagePixelSpecification.rgb;
const auto object2 = [FSPImagePixelSpecification imagePixelSpecificationWithColorModel:FSPImagePixelSpecificationColorModel.rgb
bytesPerPixel:3
alphaInfo:FSPImagePixelSpecificationAlphaInfoFirst
componentsOrder:FSPImagePixelSpecificationComponentsOrderNatural];
XCTAssertNotEqualObjects(object, object2);
}
- (void)testIsNotEqualOnDifferentComponentsOrder
{
const auto object = FSPImagePixelSpecification.rgb;
const auto object2 = FSPImagePixelSpecification.bgr;
XCTAssertNotEqualObjects(object, object2);
}
#pragma mark - Private
- (void)testEqualityOfPixelSpecification:(nullable FSPImagePixelSpecification *const)pixelSpecification
internalPixelSpecification:(const folly::Optional<image::pixel::Specification> &)internalPixelSpecification
{
if (pixelSpecification == nil) {
XCTAssertTrue(internalPixelSpecification == folly::none);
} else {
XCTAssertEqual([pixelSpecification makeInternalSpecification], internalPixelSpecification);
}
if (internalPixelSpecification.hasValue()) {
XCTAssertEqualObjects([FSPImagePixelSpecification imagePixelSpecificationFromInternalPixelSpecification:*internalPixelSpecification], pixelSpecification);
} else {
XCTAssertNil(pixelSpecification);
}
}
@end