@include test-module('_merge') {
  @include test('should merge source into the destination map') {
    @include assert-equal(_merge((a:1),(b:2)), (a:1,b:2));

    $names: (
      'characters': (
        ('name': 'barney'),
        ('name': 'fred')
      )
    );

    $ages: (
      'characters': (
        ('age': 36),
        ('age': 40)
      )
    );

    $heights: (
      'characters': (
        ('height': '5ft4'),
        ('height': '5ft5')
      )
    );

    $expected: (
      'characters': (
        ('name': 'barney', 'age': 36, 'height': '5ft4'),
        ('name': 'fred', 'age': 40, 'height': '5ft5')
      )
    );

    @include assert-equal(_merge($names, $ages, $heights), $expected);
  }

  @include test('should merge arglists') {
    $map1: ('value': test-args(1, 2, 3));
    $map2: ('value': (4: 4));
    $expected: ('value': (1: 1, 2: 2, 3: 3, 4: 4));

    @include assert-equal(_merge($map1, $map2), $expected);
  }

  @include test('should work with four arguments') {
    $expected: ('a': 4);

    @include assert-equal(_merge(('a': 1), ('a': 2), ('a': 3), $expected), $expected);
  }

  @include test('should assign null values') {
    $actual: _merge(('a': 1), ('a': null));

    @include assert-equal(__get($actual, 'a'), null);
  }

  // @include test('should work with a customizer') {
  //   $map1: ('a': 1, 'b': 2);
  //   $map2: ('a': 3, 'b': 4);

  //   $actual: _merge($map1, $map2, _ary(_concat, 2));
  //   $expected: ('a': (1, 3), 'b': (2, 4));

  //   @include assert-equal($actual, $expected);
  // }
}