簡單易用的leetcode開發測試工具(npm)

2021-09-05 08:38:32 字數 3721 閱讀 4684

最近在用es6解leetcode,當問題比較複雜時,有可能修正了新的錯誤,卻影響了前面的流程。要用通用的測試工具,卻又有殺雞用牛刀的感覺,所以就寫了個簡單易用的leetcode開發測試工具,分享與大家。

npm i leetcode_test

codes:

let test = require('leetcode_test').test

/** * @param s

* @param p

* @return

*/var ismatch = function (s, p)

firstmath = s.length > 0 &&

(p[0] === s[0] ||

p[0] === '.')

if (p.length >= 2 && p[1] === '*') else

};let cases = [ // [[,''],], //第乙個引數是空陣列

[['abbabaaaaaaacaa', 'a*.*b.a.*c*b*a*c*'], true],

[['aaa', 'a*ac'], true], //故意寫錯答案,展示測試失敗輸出效果

[['a', '..*'], true],

]test(ismatch, cases)

測試用例編寫說明
leetcode要測試的都是函式,引數個數不定,但返回值是乙個。因此,我設計用例的輸入形式為乙個用例就是乙個兩個元素的陣列,第乙個元素是乙個陣列:對應輸入引數;第二個元素是乙個值。

上面例子的輸入引數是([2, 7, 11, 15], 91),第乙個引數是陣列,第二個引數是數值;返回值是乙個陣列([0, 1])。 如果要測試的函式的輸入引數就是乙個陣列,要注意輸入形式,比如,求[1,2,3,4]平均值,要這樣輸入測試用例: [[[1,2,3,4]],2.5]

out:

test [1] success, input: ('abbabaaaaaaacaa','a*.*b.a.*c*b*a*c*'); expected: true; output: true

test [2] fail, input: ('aaa','a*ac'); expected: true; output: false

test [3] success, input: ('a','..*'); expected: true; output: true

result: test 3 cases, success: 2, fail: 1

running 5 ms

codes:

let test = require('leetcode_test').test

/** * @param nums

* @return

*/var threesum = function (nums)

while (two < three && nums[three] === nums[three + 1])

} else if (sum > 0) three--;

else two++;

}i++;

while (i < nums.length && nums[i] === nums[i - 1]) i++;

}return rs;

};let cases = [ // [[,''],], //第乙個引數是空陣列

[,],

[[[1,-1,-1,0]],[-1,0,1]],

[[[-1,0,1,0]],[[-1,0,1]]],

[[[0,0,0,0]],[0,0,0]],

[[[-1,2,-1]],[-1,-1,2]],

[[[0,0,0]],[0,0,0]],

[[[-1,0,1,2,-1,-4]],[[-1,-1,2],[-1,0,1]]], //answer's sequence is not important

[[[-1,0,1,2,-1,-4]],[[-1,0,1],[-1,-1,2]]], //answer's sequence is not important

[[[-4,-2,-2,-2,0,1,2,2,2,3,3,4,4,6,6]],[[-4,-2,6],[-4,0,4],[-4,1,3],[-4,2,2],[-2,-2,4],[-2,0,2]]],

[[[-4,-2,1,-5,-4,-4,4,-2,0,4,0,-2,3,1,-5,0]],[[-5,1,4],[-4,0,4],[-4,1,3],[-2,-2,4],[-2,1,1],[0,0,0]]],

]test(threesum,cases)

測試用例編寫說明
測試用例的7與8,期待結果的陣列元素順序並不影響答案的判定。

out:

test [1] success, input: (); expected: ; output: 

test [2] success, input: ([-1,-1,0,1]); expected: [-1,0,1]; output: [[-1,0,1]]

test [3] success, input: ([-1,0,0,1]); expected: [[-1,0,1]]; output: [[-1,0,1]]

test [4] success, input: ([0,0,0,0]); expected: [0,0,0]; output: [[0,0,0]]

test [5] success, input: ([-1,-1,2]); expected: [-1,-1,2]; output: [[-1,-1,2]]

test [6] success, input: ([0,0,0]); expected: [0,0,0]; output: [[0,0,0]]

test [7] success, input: ([-4,-1,-1,0,1,2]); expected: [[-1,-1,2],[-1,0,1]]; output: [[-1,-1,2],[-1,0,1]]

test [8] success, input: ([-4,-1,-1,0,1,2]); expected: [[-1,-1,2],[-1,0,1]]; output: [[-1,-1,2],[-1,0,1]]

test [9] success, input: ([-4,-2,-2,-2,0,1,2,2,2,3,3,4,4,6,6]); expected: [[-2,-2,4],[-2,0,2],[-4,-2,6],[-4,0,4],[-4,1,3],[-4,2,2]]; output: [[-2,-2,4],[-2,0,2],[-4,-2,6],[-4,0,4],[-4,1,3],[-4,2,2]]

test [10] success, input: ([-5,-5,-4,-4,-4,-2,-2,-2,0,0,0,1,1,3,4,4]); expected: [[-2,-2,4],[-2,1,1],[-4,0,4],[-4,1,3],[-5,1,4],[0,0,0]]; output: [[-2,-2,4],[-2,1,1],[-4,0,4],[-4,1,3],[-5,1,4],[0,0,0]]

result: test 10 cases, success: 10, fail: 0

最近一直在用,已經把輸出的樣子調得還能看過眼了,答案對比演算法,也改進了。遇到問題,我會持續改進,大家遇到問題也可提bug給我,我會盡快處理。

簡單易用的leetcode開發測試工具(npm)

最近在用es6解leetcode,當問題比較複雜時,有可能修正了新的錯誤,卻影響了前面的流程。要用通用的測試工具,卻又有殺雞用牛刀的感覺,所以就寫了個簡單易用的leetcode開發測試工具,分享與大家。npm i leetcode test codes let test require leetco...

storm簡單易用的API

這是本人翻譯storm的一篇英文文章,英文位址是如有紕漏,歡迎指正 或請參照原文,純屬個人愛好。storm提供了簡單易用的api。當使用storm程式設計時,只需要操縱轉換tuple的流資訊,乙個tuple就是乙個值的列表。tuple可以包含任何資料型別,當使用自定義資料型別時,我們只需要簡單的使用...

android之簡單易用的mvc

什麼是mvc?mvc的優點?mvc的缺點?mvc的適用情況?mvc分別為 模型 model 檢視 view 和控制controller mvc模式的目的就是應用系統的職能分工。model層實現系統中的業務邏輯。view層用於與使用者的互動。controller層是model與view之間溝通的橋梁,...