1/* 2 * Copyright 2014 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8#include "SkInterpolator.h" 9 10#include "Test.h" 11 12static SkScalar* iset(SkScalar array[3], int a, int b, int c) { 13 array[0] = SkIntToScalar(a); 14 array[1] = SkIntToScalar(b); 15 array[2] = SkIntToScalar(c); 16 return array; 17} 18 19DEF_TEST(Interpolator, reporter) { 20 SkInterpolator inter(3, 2); 21 SkScalar v1[3], v2[3], v[3]; 22 SkInterpolator::Result result; 23 24 inter.setKeyFrame(0, 100, iset(v1, 10, 20, 30), 0); 25 inter.setKeyFrame(1, 200, iset(v2, 110, 220, 330)); 26 27 result = inter.timeToValues(0, v); 28 REPORTER_ASSERT(reporter, result == SkInterpolator::kFreezeStart_Result); 29 REPORTER_ASSERT(reporter, memcmp(v, v1, sizeof(v)) == 0); 30 31 result = inter.timeToValues(99, v); 32 REPORTER_ASSERT(reporter, result == SkInterpolator::kFreezeStart_Result); 33 REPORTER_ASSERT(reporter, memcmp(v, v1, sizeof(v)) == 0); 34 35 result = inter.timeToValues(100, v); 36 REPORTER_ASSERT(reporter, result == SkInterpolator::kNormal_Result); 37 REPORTER_ASSERT(reporter, memcmp(v, v1, sizeof(v)) == 0); 38 39 result = inter.timeToValues(200, v); 40 REPORTER_ASSERT(reporter, result == SkInterpolator::kNormal_Result); 41 REPORTER_ASSERT(reporter, memcmp(v, v2, sizeof(v)) == 0); 42 43 result = inter.timeToValues(201, v); 44 REPORTER_ASSERT(reporter, result == SkInterpolator::kFreezeEnd_Result); 45 REPORTER_ASSERT(reporter, memcmp(v, v2, sizeof(v)) == 0); 46 47 result = inter.timeToValues(150, v); 48 REPORTER_ASSERT(reporter, result == SkInterpolator::kNormal_Result); 49 50// Found failing when we re-enabled this test: 51#if 0 52 SkScalar vv[3]; 53 REPORTER_ASSERT(reporter, memcmp(v, iset(vv, 60, 120, 180), sizeof(v)) == 0); 54#endif 55 56 result = inter.timeToValues(125, v); 57 REPORTER_ASSERT(reporter, result == SkInterpolator::kNormal_Result); 58 result = inter.timeToValues(175, v); 59 REPORTER_ASSERT(reporter, result == SkInterpolator::kNormal_Result); 60 61} 62