@include test-module('_omit') {
  $map: ('a': 1, 'b': 2, 'c': 3);
  $expected: ('b': 2);

  @include test('should create a map with omitted properties') {
    @include assert-equal(_omit($map, 'a'), ('b': 2, 'c': 3));
  }

  @include test('should create a map with omitted properties') {
    @include assert-equal(_omit($map, 'a', 'c'), $expected);
  }

  @include test('should support picking a list of properties') {
    @include assert-equal(_omit($map, 'a' 'c'), $expected);
  }

  @include test('should support picking a list of properties and individual properties') {
    @include assert-equal(_omit($map, ('a',), 'c'), $expected);
  }

  @include test('should return an empty map when map is null') {
    @include assert-equal(_omit(null, 'test'), ());
  }

  @include test('should work with arglists as secondary arguments') {
    $args: test-args('a', 'c');

    @include assert-equal(_omit($map, $args), $expected);
  }

  @include test('should work with a list map argument') {
    @include assert-equal(_omit(1 2 3, 1, 3), (2: 2));
  }

  @include test('should work with a predicate argument') {
    @include assert-equal(_omit(('a': 1,'b': 2,'c': 3,'d': 4,'e': 5), test-is-even), ('a': 1, 'c': 3, 'e': 5));
  }

  //@include test('should work with lists as keys') {
  //  $map-with-list-as-key: ('a': 'test', ('b', 'c'): 'test2');
  //  $expected: (('b', 'c'): 'test2');
  //
  //  @include assert-equal(_omit($map-with-list-as-key, 'a'), $expected);
  //}

  @include test('should work with maps as keys') {
    $map-with-map-as-key: ('a': 'test', ('b': 'c'): 'test2');
    $expected: (('b': 'c'): 'test2');

    @include assert-equal(_omit($map-with-map-as-key, 'a'), $expected);
  }
}