normalize.test.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /**
  2. * normalize.test.ts
  3. * @author: oldj
  4. * @homepage: https://oldj.net
  5. */
  6. import assert = require('assert')
  7. import normalize, { parseLine } from '@root/common/normalize'
  8. import { promises as fs } from 'fs'
  9. import * as path from 'path'
  10. const mock_dir = path.join(__dirname, 'mock')
  11. describe('normalize test', function () {
  12. const loadData = async (fn: string) => {
  13. return fs.readFile(path.join(mock_dir, fn), 'utf-8')
  14. }
  15. it('basic test', () => {
  16. assert(normalize('aaa') === 'aaa')
  17. })
  18. it('paresLine test', () => {
  19. let d = parseLine('1.2.3.4 abc.com')
  20. assert(d.ip === '1.2.3.4')
  21. assert(d.domains.length === 1 && d.domains[0] === 'abc.com')
  22. assert(d.comment === '')
  23. d = parseLine('1.2.3.4 \t abc.com abc2.com abc3.com\ttest.com ')
  24. assert(d.ip === '1.2.3.4')
  25. assert(d.domains.length === 4)
  26. assert(d.domains.join(',') === 'abc.com,abc2.com,abc3.com,test.com')
  27. assert(d.comment === '')
  28. d = parseLine('1.2.3.4 \t abc.com abc2.com abc3.com\ttest.com # this is comment ')
  29. assert(d.ip === '1.2.3.4')
  30. assert(d.domains.length === 4)
  31. assert(d.domains.join(',') === 'abc.com,abc2.com,abc3.com,test.com')
  32. assert(d.comment === 'this is comment')
  33. d = parseLine('1.2.3.4 \t # this is comment ')
  34. assert(d.ip === '1.2.3.4')
  35. assert(d.domains.length === 0)
  36. assert(d.comment === 'this is comment')
  37. d = parseLine(' \t # this is comment ')
  38. assert(d.ip === '')
  39. assert(d.domains.length === 0)
  40. assert(d.comment === 'this is comment')
  41. d = parseLine('# this is comment ')
  42. assert(d.ip === '')
  43. assert(d.domains.length === 0)
  44. assert(d.comment === 'this is comment')
  45. })
  46. it('duplicate test', async () => {
  47. const eq = async (number: string) => {
  48. let input = await loadData(`normalize.${number}.input.hosts`)
  49. let output = await loadData(`normalize.${number}.output.hosts`)
  50. // console.log(normalize(input, { remove_duplicate_records: true }))
  51. assert(normalize(input, { remove_duplicate_records: true }) === output)
  52. }
  53. await eq('001')
  54. })
  55. })