ios/SpectrumKit/SpectrumKitTests/FSPEncodeOptionsTests.mm (66 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/FSPOptions_Private.h>
#import <SpectrumKit/FSPAbsoluteToOriginCropRequirement.h>
#include <spectrum/requirements/CropAbsoluteToOrigin.h>
using namespace facebook::spectrum;
@interface FSPEncodeOptionsTests : XCTestCase
@end
@implementation FSPEncodeOptionsTests
- (void)testDefaultValues
{
const auto encodeRequirement = [FSPEncodeRequirement encodeRequirementWithFormat:FSPEncodedImageFormat.jpeg];
const auto object = [FSPEncodeOptions encodeOptionsWithEncodeRequirement:encodeRequirement];
XCTAssertNil(object.outputImagePixelSpecification);
XCTAssertNil(object.metadata);
XCTAssertNil(object.configuration);
XCTAssertEqualObjects(object.transformations, [FSPTransformations new]);
}
- (void)testInternalTypeConversion
{
const auto object = FSPMakeDefaultEncodeOptions();
const auto internalObject = [object makeInternalEncodeOptions];
const auto expectedTransformations = Transformations{
.rotateRequirement = requirements::Rotate{.degrees = 90},
.cropRequirement = requirements::CropAbsoluteToOrigin({.top = 0, .left = 0, .bottom = 1, .right = 1}, true),
.resizeRequirement = requirements::Resize{requirements::Resize::Mode::Exact, image::Size{2, 2}},
};
const auto expectedEncodeRequirement = requirements::Encode{
.quality = 42, .format = image::formats::Jpeg, .mode = requirements::Encode::Mode::Lossy};
XCTAssertTrue(internalObject.transformations == expectedTransformations);
XCTAssertEqual(internalObject.encodeRequirement, expectedEncodeRequirement);
XCTAssertEqual(internalObject.outputPixelSpecificationRequirement, image::pixel::specifications::RGB);
}
#pragma mark - Copy
- (void)testCopyIsEqual
{
const auto object = FSPMakeDefaultEncodeOptions();
XCTAssertEqualObjects(object, [object copy]);
}
#pragma mark - Equality
- (void)testIsEqual
{
const auto object = FSPMakeDefaultEncodeOptions();
const auto object2 = FSPMakeDefaultEncodeOptions();
XCTAssertEqualObjects(object, object2);
}
#pragma mark - Helpers
static FSPEncodeOptions *FSPMakeDefaultEncodeOptions()
{
const auto encodeRequirement = [FSPEncodeRequirement encodeRequirementWithFormat:FSPEncodedImageFormat.jpeg
mode:FSPEncodeRequirementModeLossy
quality:42];
return [FSPEncodeOptions encodeOptionsWithEncodeRequirement:encodeRequirement
transformations:FSPMakeDefaultTransformations()
metadata:[FSPImageMetadata new]
configuration:nil
outputPixelSpecificationRequirement:FSPImagePixelSpecification.rgb];
}
static FSPTransformations *FSPMakeDefaultTransformations()
{
const auto transformations = [FSPTransformations new];
transformations.rotateRequirement = [FSPRotateRequirement rotateRequirementWithDegrees:90];
transformations.resizeRequirement = [FSPResizeRequirement resizeRequirementExactWithTargetSize:CGSizeMake(2.0f, 2.0f)];
transformations.cropRequirement = [FSPAbsoluteToOriginCropRequirement absoluteToOriginCropRequirementWithValues:{.right = 1, .bottom = 1}];
return transformations;
}
@end