blob: f13044ec46c7ca0c198f4e2bac418631ae851789 [file] [log] [blame]
//
// MTLDictionaryManipulationSpec.m
// Mantle
//
// Created by Justin Spahr-Summers on 2012-09-24.
// Copyright (c) 2012 GitHub. All rights reserved.
//
SpecBegin(MTLDictionaryManipulationAdditions)
describe(@"-mtl_dictionaryByAddingEntriesFromDictionary:", ^{
NSDictionary *dict = @{ @"foo": @"bar", @(5): NSNull.null };
it(@"should return the same dictionary when adding from an empty dictionary", ^{
NSDictionary *combined = [dict mtl_dictionaryByAddingEntriesFromDictionary:@{}];
expect(combined).to.equal(dict);
});
it(@"should return the same dictionary when adding from nil", ^{
NSDictionary *combined = [dict mtl_dictionaryByAddingEntriesFromDictionary:nil];
expect(combined).to.equal(dict);
});
it(@"should add any new keys", ^{
NSDictionary *combined = [dict mtl_dictionaryByAddingEntriesFromDictionary:@{ @"buzz": @(10), @"baz": NSNull.null }];
NSDictionary *expected = @{ @"foo": @"bar", @(5): NSNull.null, @"buzz": @(10), @"baz": NSNull.null };
expect(combined).to.equal(expected);
});
it(@"should replace any existing keys", ^{
NSDictionary *combined = [dict mtl_dictionaryByAddingEntriesFromDictionary:@{ @(5): @(10), @"buzz": @"baz" }];
NSDictionary *expected = @{ @"foo": @"bar", @(5): @(10), @"buzz": @"baz" };
expect(combined).to.equal(expected);
});
});
describe(@"-mtl_dictionaryByRemovingEntriesWithKeys:", ^{
NSDictionary *dict = @{ @"foo": @"bar", @(5): NSNull.null };
it(@"should return the same dictionary when removing keys that don't exist in the receiver", ^{
NSDictionary *removed = [dict mtl_dictionaryByRemovingEntriesWithKeys:[NSSet setWithObject:@"hi"]];
expect(removed).to.equal(dict);
});
it(@"should return the same dictionary when given a nil array of keys", ^{
NSDictionary *removed = [dict mtl_dictionaryByRemovingEntriesWithKeys:nil];
expect(removed).to.equal(dict);
});
it(@"should remove all the entries for the given keys", ^{
NSDictionary *removed = [dict mtl_dictionaryByRemovingEntriesWithKeys:[NSSet setWithObject:@(5)]];
NSDictionary *expected = @{ @"foo": @"bar" };
expect(removed).to.equal(expected);
});
it(@"should return an empty dictionary when it removes all its keys", ^{
NSDictionary *removed = [dict mtl_dictionaryByRemovingEntriesWithKeys:[NSSet setWithArray:dict.allKeys]];
NSDictionary *expected = @{};
expect(removed).to.equal(expected);
});
});
SpecEnd