Guest User

Untitled

a guest
Jan 23rd, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. (() => {
  2. function cellForRow(items,rowNumber){
  3. function getIsDetail(){
  4. return false //тут нужно сделать алгоритм
  5. }
  6. function getItemNumber(){
  7. return 0 //тут нужно сделать алгоритм
  8. }
  9. return (getIsDetail()?'detail':'item') + getItemNumber()
  10. }
  11. function testTestCases(testCases){
  12. function testTestCase(testCase){
  13. for (var i = 0; i < testCase.rows.length; i++) {
  14. let factResult = cellForRow(testCase.items,i)
  15. let row = testCase.rows[i]
  16. let expectedResult = (row.isDetail?'detail':'item') + row.itemNum
  17. if(factResult != expectedResult){
  18. console.log({
  19. factResult,
  20. expectedResult,
  21. i,
  22. testCase
  23. });
  24. }
  25. }
  26. }
  27. for(testCase of testCases){
  28. testTestCase(testCase)
  29. }
  30. }
  31. function generateTestCases() {
  32. const MAX_ITEMS = 3
  33. function calcTestCase(testCase) {
  34. let rows = []
  35. for (let item of testCase.items) {
  36. rows.push({
  37. isDetail: false
  38. , itemNum: item.itemNum
  39. })
  40. if (!item.collapsed) {
  41. rows.push({
  42. isDetail: true
  43. , itemNum: item.itemNum
  44. })
  45. }
  46. }
  47. testCase.rows = rows
  48. }
  49.  
  50. function generateTestCase(m, itemCount, caseNumber) {
  51. let items = []
  52. for (var i = 0; i < itemCount; i++) {
  53. items.push({
  54. itemNum: i
  55. , collapsed: ((caseNumber >> i) & 1) == 0
  56. })
  57. }
  58. let testCase = {
  59. itemCount
  60. , caseNumber
  61. , items
  62. }
  63. calcTestCase(testCase)
  64. m.push(testCase)
  65. }
  66.  
  67. function generateTestCaseForItemCount(m, itemCount) {
  68. let caseCount = 1 << itemCount
  69. for (var i = 0; i < caseCount; i++) {
  70. generateTestCase(m, itemCount, i)
  71. }
  72. }
  73. var m = [];
  74. for (var i = 1; i <= MAX_ITEMS; i++) {
  75. generateTestCaseForItemCount(m, i)
  76. }
  77. return m
  78. }
  79. let testCases = generateTestCases()
  80. console.log({ testCases });
  81. testTestCases(testCases);
  82. })()
Add Comment
Please, Sign In to add comment