'use strict';
describe('EmojiUtil', function() {
    describe('getCountOfAllMatches', function() {
        it('returns zero for string with no matches', function() {
            var r = /s/g;
            var str = 'no match';
            var actual = emoji.getCountOfAllMatches(str, r);
            assert.equal(actual, 0);
        });
        it('returns 1 for one match', function() {
            var r = /s/g;
            var str = 'just one match';
            var actual = emoji.getCountOfAllMatches(str, r);
            assert.equal(actual, 1);
        });
        it('returns 2 for two matches', function() {
            var r = /s/g;
            var str = 's + s';
            var actual = emoji.getCountOfAllMatches(str, r);
            assert.equal(actual, 2);
        });
        it('returns zero for no match with non-global regular expression', function() {
            var r = /s/g;
            var str = 'no match';
            var actual = emoji.getCountOfAllMatches(str, r);
            assert.equal(actual, 0);
        });
        it('returns 1 for match with non-global regular expression', function() {
            var r = /s/;
            var str = 's + s';
            var actual = emoji.getCountOfAllMatches(str, r);
            assert.equal(actual, 1);
        });
    });
    describe('hasNormalCharacters', function() {
        it('returns true for all normal text', function() {
            var str = 'normal';
            var actual = emoji.hasNormalCharacters(str);
            assert.equal(actual, true);
        });
        it('returns false for all emoji text', function() {
            var str = '🔥🔥🔥🔥';
            var actual = emoji.hasNormalCharacters(str);
            assert.equal(actual, false);
        });
        it('returns false for emojis mixed with spaces', function() {
            var str = '🔥 🔥 🔥 🔥';
            var actual = emoji.hasNormalCharacters(str);
            assert.equal(actual, false);
        });
        it('returns true for emojis and text', function() {
            var str = '🔥 normal 🔥 🔥 🔥';
            var actual = emoji.hasNormalCharacters(str);
            assert.equal(actual, true);
        });
    });
    describe('getSizeClass', function() {
        it('returns nothing for non-emoji text', function() {
            assert.equal(emoji.getSizeClass('normal text'), '');
        });
        it('returns nothing for emojis mixed with text', function() {
            assert.equal(emoji.getSizeClass('🔥 normal 🔥'), '');
        });
        it('returns nothing for more than 8 emojis', function() {
            assert.equal(emoji.getSizeClass('🔥🔥 🔥🔥 🔥🔥 🔥🔥 🔥'), '');
        });
        it('returns "small" for 7-8 emojis', function() {
            assert.equal(emoji.getSizeClass('🔥🔥 🔥🔥 🔥🔥 🔥🔥'), 'small');
            assert.equal(emoji.getSizeClass('🔥🔥 🔥🔥 🔥🔥 🔥'), 'small');
        });
        it('returns "medium" for 5-6 emojis', function() {
            assert.equal(emoji.getSizeClass('🔥🔥 🔥🔥 🔥🔥'), 'medium');
            assert.equal(emoji.getSizeClass('🔥🔥 🔥🔥 🔥'), 'medium');
        });
        it('returns "large" for 3-4 emojis', function() {
            assert.equal(emoji.getSizeClass('🔥🔥 🔥🔥'), 'large');
            assert.equal(emoji.getSizeClass('🔥🔥 🔥'), 'large');
        });
        it('returns "jumbo" for 1-2 emojis', function() {
            assert.equal(emoji.getSizeClass('🔥🔥'), 'jumbo');
            assert.equal(emoji.getSizeClass('🔥'), 'jumbo');
        });
    });
    describe('addClass', function() {
        it('returns original string if no emoji images', function() {
            var start = 'no images. but there is some 🔥.  ';
            var expected = start;
            var actual = emoji.addClass(start, 'jumbo');
            assert.equal(expected, actual);
        });
        it('returns original string if no sizeClass provided', function() {
            var start = 'before
';
            var expected = start;
            var actual = emoji.addClass(start, 'jumbo');
            assert.equal(expected, actual);
        });
        it('returns original string if no sizeClass provided', function() {
            var start = 'before  after';
            var expected = start;
            var actual = emoji.addClass(start);
            assert.equal(expected, actual);
        });
        it('adds provided class to image class', function() {
            var start = 'before
 after';
            var expected = start;
            var actual = emoji.addClass(start);
            assert.equal(expected, actual);
        });
        it('adds provided class to image class', function() {
            var start = 'before  after';
            var expected = 'before
 after';
            var expected = 'before  after';
            var actual = emoji.addClass(start, 'jumbo');
            assert.equal(expected, actual);
        });
    });
    describe('ensureTitlesHaveColons', function() {
        it('returns original string if no emoji images', function() {
            var start = 'no images. but there is some 🔥.
 after';
            var actual = emoji.addClass(start, 'jumbo');
            assert.equal(expected, actual);
        });
    });
    describe('ensureTitlesHaveColons', function() {
        it('returns original string if no emoji images', function() {
            var start = 'no images. but there is some 🔥.  ';
            var expected = start;
            var actual = emoji.ensureTitlesHaveColons(start);
            assert.equal(expected, actual);
        });
        it('returns original string if image title already has colons', function() {
            var start = 'before
';
            var expected = start;
            var actual = emoji.ensureTitlesHaveColons(start);
            assert.equal(expected, actual);
        });
        it('returns original string if image title already has colons', function() {
            var start = 'before  after';
            var expected = start;
            var actual = emoji.ensureTitlesHaveColons(start);
            assert.equal(expected, actual);
        });
        it('does not change title for non-emoji image', function() {
            var start = 'before
 after';
            var expected = start;
            var actual = emoji.ensureTitlesHaveColons(start);
            assert.equal(expected, actual);
        });
        it('does not change title for non-emoji image', function() {
            var start = 'before  after';
            var expected = start;
            var actual = emoji.ensureTitlesHaveColons(start);
            assert.equal(expected, actual);
        });
        it('adds colons to emoji image title', function() {
            var start = 'before
 after';
            var expected = start;
            var actual = emoji.ensureTitlesHaveColons(start);
            assert.equal(expected, actual);
        });
        it('adds colons to emoji image title', function() {
            var start = 'before  after';
            var expected = 'before
 after';
            var expected = 'before  after';
            var actual = emoji.ensureTitlesHaveColons(start);
            assert.equal(expected, actual);
        });
    });
    describe('signalReplace', function() {
        it('returns images for every emoji', function() {
            var actual = emoji.signalReplace('🏠 🔥');
            var expected = '
 after';
            var actual = emoji.ensureTitlesHaveColons(start);
            assert.equal(expected, actual);
        });
    });
    describe('signalReplace', function() {
        it('returns images for every emoji', function() {
            var actual = emoji.signalReplace('🏠 🔥');
            var expected = ' '
                + '
'
                + '  ';
            assert.equal(expected, actual);
        });
        it('properly hyphenates a variation', function() {
            var actual = emoji.signalReplace('💪🏿'); // muscle with dark skin tone modifier
            var expected = '
';
            assert.equal(expected, actual);
        });
        it('properly hyphenates a variation', function() {
            var actual = emoji.signalReplace('💪🏿'); // muscle with dark skin tone modifier
            var expected = ' ';
            assert.equal(expected, actual);
        });
    });
});
';
            assert.equal(expected, actual);
        });
    });
});