// =============================================================================
// =ALESKI TESTS - MAP-SORT-KEYS
// =============================================================================

@import "aleksi/maps/map-sort-keys";

@include test-module('The map-sort-keys function')
{
  @include test('should sort the map keys on alphabetical order when no specific order is specified')
  {
    @include assert-equal( map-keys(map-sort-keys($str-map)), ('en', 'es', 'fr') );
    @include assert-unequal( map-keys(map-sort-keys($str-map)),('en', 'fr', 'es') );
    @include assert-unequal( map-keys(map-sort-keys($str-map)), ('es', 'en', 'fr') );
    @include assert-equal( map-keys(map-sort-keys($num-map)), ('em', 'int', 'percentage', 'px', 'rem') );
  }

  @include test('should sort the map keys based on the given, ordered list of keys')
  {
    @include assert-equal( map-keys(map-sort-keys($str-map, 'fr' 'en' 'es')), ('fr', 'en', 'es') );
    @include assert-unequal( map-keys(map-sort-keys($str-map, 'fr' 'en' 'es')), ('en', 'fr', 'es') );
    @include assert-unequal( map-keys(map-sort-keys($str-map, 'fr' 'en' 'es')), ('en', 'es', 'fr') );
    @include assert-equal( map-keys(map-sort-keys($num-map, 'px' 'percentage' 'rem' 'em' 'int')), ('px', 'percentage', 'rem', 'em', 'int') );
    @include assert-unequal( map-keys(map-sort-keys($num-map, 'px' 'percentage' 'rem' 'em' 'int')), ('em', 'percentage', 'px', 'rem', 'int') );
  }

  @include test('should add keys not specified at the end of the map, and in the same order as in original map')
  {
    @include assert-equal( map-keys(map-sort-keys($str-map, 'fr' 'en')), ('fr', 'en', 'es') );
    @include assert-equal( map-keys(map-sort-keys($str-map, 'es' 'en')), ('es', 'en', 'fr') );
    @include assert-equal( map-keys(map-sort-keys($num-map, 'px' 'percentage' 'rem')), ('px', 'percentage', 'rem', 'int', 'em') );
    @include assert-unequal( map-keys(map-sort-keys($num-map, 'px' 'percentage' 'rem')), ('px', 'percentage', 'rem', 'em', 'int') );
    @include assert-equal( map-keys(map-sort-keys($num-map, 'px' 'percentage')), ('px', 'percentage', 'int', 'em', 'rem') );
  }

  // @include xtest('should throw an error when passed wrong arguments')
  // {
  //   @include assert-equal( map-sort-keys($str-map, false ), null );
  //   @include assert-equal( map-sort-keys($str-map, $str-map), null );
  //   @include assert-equal( map-sort-keys($str-list, 'fr' 'en'), null );
  // }

  @include test('should be aliased as map-sort')
  {
    @include assert-equal( map-sort($num-map), map-sort-keys($num-map) );
    @include assert-equal( map-sort($str-map, 'fr' 'en' 'es'), map-sort-keys($str-map, 'fr' 'en' 'es') );
  }
}