anchor.diff:          expect(() => Fraction(2, 0), throwsArgumentError);
           expect(() => Fraction(2, null), throwsArgumentError);
         });
  -      test('double basic', () {
  +      test('fromDouble (basic)', () {
           expect(Fraction.fromDouble(2), Fraction(2));
           expect(Fraction.fromDouble(100), Fraction(100));
         });
  -      test('double finite', () {
  +      test('fromDouble (finite)', () {
           expect(Fraction.fromDouble(1 / 2), Fraction(1, 2));
           expect(Fraction.fromDouble(1 / 4), Fraction(1, 4));
         });
  -      test('double finite (whole)', () {
  +      test('fromDouble (finite, whole)', () {
           expect(Fraction.fromDouble(5 / 2), Fraction(5, 2));
           expect(Fraction.fromDouble(9 / 4), Fraction(9, 4));
         });
  -      test('double infinite', () {
  +      test('fromDouble (infinite)', () {
           expect(Fraction.fromDouble(1 / 3), Fraction(1, 3));
           expect(Fraction.fromDouble(1 / 7), Fraction(1, 7));
         });
  -      test('double infinite (whole)', () {
  +      test('fromDouble (infinite, whole)', () {
           expect(Fraction.fromDouble(5 / 3), Fraction(5, 3));
           expect(Fraction.fromDouble(9 / 7), Fraction(9, 7));
         });
  -      test('double negative', () {
  +      test('fromDouble (negative)', () {
           expect(Fraction.fromDouble(-1 / 3), Fraction(-1, 3));
           expect(Fraction.fromDouble(-5 / 3), Fraction(-5, 3));
         });
  -      test('double all', () {
  +      test('fromDouble (all)', () {
           for (var num = -10; num <= 10; num++) {
             for (var den = -10; den <= 10; den++) {
               if (den != 0) {
  
positive.code:         expect(Fraction.one, Fraction(1));
          expect(Fraction(1, 2) * Fraction.one, Fraction(1, 2));
        });
        test('parse', () {
          expect(Fraction.tryParse('1/2'), Fraction(1, 2));
          expect(Fraction.tryParse(' 1/2'), Fraction(1, 2));
          expect(Fraction.tryParse('1 /2'), Fraction(1, 2));
          expect(Fraction.tryParse('1/ 2'), Fraction(1, 2));
          expect(Fraction.tryParse('1/2 '), Fraction(1, 2));
        });
        test('parse neative', () {
          expect(Fraction.tryParse('-1/2'), Fraction(-1, 2));
          expect(Fraction.tryParse('1/-2'), Fraction(-1, 2));
          expect(Fraction.tryParse('-1/-2'), Fraction(1, 2));
        });
        test('parse integer', () {
          expect(Fraction.tryParse('3'), Fraction(3));
          expect(Fraction.tryParse(' 3'), Fraction(3));
          expect(Fraction.tryParse('3 '), Fraction(3));
        });
        test('parse error', () {
          expect(Fraction.tryParse(''), isNull);
          expect(Fraction.tryParse('1.23'), isNull);
          expect(Fraction.tryParse('1/2/3'), isNull);
  
negative.code:         expect(complex.abs(), math.sqrt(2));
          expect(complex.arg(), 3 * math.pi / 4);
        });
        test('tryParse', () {
          expect(Complex.tryParse('1+2i'), Complex(1, 2));
          expect(Complex.tryParse('1-2i'), Complex(1, -2));
          expect(Complex.tryParse('-1+2i'), Complex(-1, 2));
          expect(Complex.tryParse('-1-2i'), Complex(-1, -2));
        });
        test('tryParse (with whitespace)', () {
          expect(Complex.tryParse('1 + 2i'), Complex(1, 2));
          expect(Complex.tryParse('1 - 2i'), Complex(1, -2));
          expect(Complex.tryParse(' - 1 + 2 i '), Complex(-1, 2));
          expect(Complex.tryParse(' - 1 - 2 i '), Complex(-1, -2));
        });
        test('tryParse (real)', () {
          expect(Complex.tryParse('1'), Complex(1));
          expect(Complex.tryParse('1.2'), Complex(1.2));
          expect(Complex.tryParse('-1.2'), Complex(-1.2));
          expect(Complex.tryParse('1.2e2'), Complex(120));
          expect(Complex.tryParse('1.2e-2'), Complex(0.012));
        });
        test('tryParse (imaginary)', () {
          expect(Complex.tryParse('i'), Complex(0, 1));
          expect(Complex.tryParse('1I'), Complex(0, 1));
          expect(Complex.tryParse('1.2i'), Complex(0, 1.2));
  