TDD之Frequency Number练习

作者: WishToWeb | 来源:发表于2017-05-19 23:19 被阅读17次

    一、Frequency Number处理前准备

    • Git准备

      • 通过连接https://git-for-windows.github.io下载Windows版本git并安装
      • 安装后打开GitBash,通过命令npm install安装nmp包。
      • 通过命令npm install -g jasmine安装jasmine测试框架
      • 初步练习创建版本库,并熟悉相关命令如git initgit addgit statusgit commit -mgit loggit log --pretty=onelinegit checkoutgit reset
        git简介.png
    • Nodejs准备

    二、Frequency Number要求

    • nodejs小程序:

      • 处理一段字符串信息,这段字符串信息是由英文单词组成,每两个单词之间有空格;
      • 处理结果也为一段字符串,这个字符串应该每行只显示一个单词和它的数量,并且按出现频率倒序排列。
    • example:

      • input:
        “it was the age of wisdom it was the age of foolishness it is”
      • output:
      was 2
      the 2
      age 2
      of 2 
      wisdom 1
      foolishness 1
      is 1```
      
      

    三、Frequency Number处理过程

    • 任务划分

    思路.png
    • 主函数main

    var format = function (word,count){
        return word +" "+ count;
    };
    var group = function(wordArray){
        return wordArray.reduce((array,word) => {
                var entry = array.find((e) =>e.word ===word);
        if(entry){
            entry.count++;
        }else{
            array.push({word:word,count:1});
        }
        return array;
    },[]);
    };
    var split = function(words){
        return words.split(/\s+/);
    };
    var sort = function(groupedWords){
        groupedWords.sort((s,y)=>y.count - x.count);
    };
    function main(words){
        if(words!== ''){
            var wordArray = words.split(/\s+/);
            var groupedWords = group(wordArray);
            groupedWords.sort((x,y) =>y.count -x.count);
            return groupedWords.map((e) => format(e.word,e.count)).join('\r\n');
        }
        return '';
    }
    module.exports = main;
    
    • 测试代码test

    var main = require("./main.js");
    describe("Word Frequency",function(){
        it("test1  returns empty string given empty string",function(){
            var result = main('');
            expect(result).toEqual('');
        });
        it("test2  returns string given one word",function(){
            var result = main('he');
            expect(result).toEqual('he 1');
        });
        it("test3  returns string given two different words",function(){
            var result = main('he is');
            expect(result).toEqual('he 1\r\nis 1');
        });
        it("test4  returns string given duplicated words",function(){
            var result = main('he is he');
            expect(result).toEqual('he 2\r\nis 1');
        });
        it("test5  returns string given duplicated words need to be sorted",function(){
            var result = main('he is is');
            expect(result).toEqual('is 2\r\nhe 1');
        });
        it("test6  returns string given words splited by multiple spaces",function(){
            var result = main('he is');
            expect(result).toEqual('he 1\r\nis 1');
        });
        it("test7  returns string given words splited by multiple spaces",function(){
            var result = main('it was the age of wisdom it was the age of foolishness it is');
            expect(result).toEqual('it 3\r\nwas 2\r\nthe 2\r\nage 2\r\nof 2\r\nwisdom 1\r\nfoolishness 1\r\nis 1');
        });
    });
    
    • 依次通过每一个测试

    • 每通过一个测试都需要用git提交一次

    • 最后通过git log 查看提交记录

    四、Frequency Number处理结果

    总测试.png

    相关文章

      网友评论

        本文标题:TDD之Frequency Number练习

        本文链接:https://www.haomeiwen.com/subject/bpxexxtx.html