OLD | NEW |
(Empty) | |
| 1 /* |
| 2 * Copyright 2014 Google Inc. All rights reserved. |
| 3 * |
| 4 * Use of this source code is governed by a BSD-style |
| 5 * license that can be found in the LICENSE file or at |
| 6 * https://developers.google.com/open-source/licenses/bsd |
| 7 */ |
| 8 |
| 9 part of charted.test.scale; |
| 10 |
| 11 testLogScale() { |
| 12 group('LogScale.domain', () { |
| 13 test('is positive if the first element in domain is non-negative', () { |
| 14 LogScale log = new LogScale(); |
| 15 log.domain = [1, 100]; |
| 16 expect(log.apply(0.1), closeTo(-0.5, EPSILON)); |
| 17 expect(log.apply(1), equals(0)); |
| 18 expect(log.apply(10), equals(0.5)); |
| 19 expect(log.apply(100), equals(1)); |
| 20 expect(log.apply(1000), closeTo(1.5, EPSILON)); |
| 21 expect(log.invert(0), equals(1)); |
| 22 expect(log.invert(0.5), equals(10)); |
| 23 expect(log.invert(1), equals(100)); |
| 24 }); |
| 25 test('is negative if the first element in domain is negative', () { |
| 26 LogScale log = new LogScale(); |
| 27 log.domain = [-1, -100]; |
| 28 expect(log.apply(-1), equals(0)); |
| 29 expect(log.apply(-10), equals(0.5)); |
| 30 expect(log.apply(-100), equals(1)); |
| 31 expect(log.invert(0), equals(-1)); |
| 32 expect(log.invert(0.5), equals(-10)); |
| 33 expect(log.invert(1), equals(-100)); |
| 34 }); |
| 35 }); |
| 36 |
| 37 test('LogScale supports setting clamp to clamp range', () { |
| 38 LogScale log = new LogScale(); |
| 39 log.domain = [1, 100]; |
| 40 log.clamp = true; |
| 41 expect(log.apply(0.1), equals(0)); |
| 42 expect(log.apply(1), equals(0)); |
| 43 expect(log.apply(10), equals(0.5)); |
| 44 expect(log.apply(100), equals(1)); |
| 45 expect(log.apply(1000), equals(1)); |
| 46 }); |
| 47 |
| 48 test('LogScale supports setting base of log', () { |
| 49 LogScale log = new LogScale(); |
| 50 log.base = 2; |
| 51 log.domain = [1, 8]; |
| 52 log.range = [1, 8]; |
| 53 expect(log.apply(1), equals(1)); |
| 54 expect(log.apply(4), closeTo(5.666666666666666, EPSILON)); |
| 55 expect(log.apply(8), equals(8)); |
| 56 }); |
| 57 |
| 58 test('LogScale.rangeRound sets the interpolator to interpolateRound', () { |
| 59 LogScale log = new LogScale(); |
| 60 log.domain = [1, 8]; |
| 61 log.rangeRound([1, 8]); |
| 62 expect(log.apply(1), equals(1)); |
| 63 expect(log.apply(4), equals(6)); |
| 64 expect(log.apply(8), equals(8)); |
| 65 }); |
| 66 |
| 67 test('LogScale.ticks returns representative values from domain', () { |
| 68 LogScale log = new LogScale(); |
| 69 log.domain = [1, 100]; |
| 70 expect(log.ticks(), orderedEquals( |
| 71 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100])); |
| 72 log.domain = [-1, -100]; |
| 73 expect(log.ticks(), orderedEquals([-100, -90, -80, -70, -60, -50, -40, -30, |
| 74 -20, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1])); |
| 75 }); |
| 76 |
| 77 test('LogScale.tickFormat formats tick values by specified formatter', () { |
| 78 // Default formatter |
| 79 LogScale log = new LogScale(); |
| 80 log.domain = [1, 10]; |
| 81 expect(log.ticks().map((d) => log.createTickFormatter(20)(d)), |
| 82 orderedEquals(['1e+0', '2e+0', '3e+0', '4e+0', '5e+0', '6e+0', '7e+0', |
| 83 '8e+0', '9e+0', '1e+1'])); |
| 84 // Specified formatter |
| 85 log.domain = [0.1, 1]; |
| 86 expect(log.ticks().map((d) => log.createTickFormatter(20, '+%')(d)), |
| 87 orderedEquals(['+10%', '+20%', '+30%', '+40%', '+50%', '+60%', '+70%', |
| 88 '+80%', '+90%', '+100%'])); |
| 89 }); |
| 90 |
| 91 test('LogScale.nice extends the domain to nice round values', () { |
| 92 LogScale log = new LogScale(); |
| 93 log.domain = [0.20147987687960267, 0.996679553296417]; |
| 94 log.nice(); |
| 95 expect(log.domain, orderedEquals([0.1, 1])); |
| 96 log.domain = [-0.20147987687960267, -0.996679553296417]; |
| 97 log.nice(); |
| 98 expect(log.domain, orderedEquals([-0.1, -1])); |
| 99 }); |
| 100 } |
OLD | NEW |