import ItemsValidator from "../../utils/ItemsValidator";


describe("ItemsValidator.test  ", () => {
  test('hi', ()=>{
    expect(ItemsValidator.isValidExpToParse(`Osh [ 1, 2] - 23000`)).toEqual(true);
  })
  test("empty values", () => {
    expect(ItemsValidator.isValidExpToParse("")).toEqual(false)
    expect(ItemsValidator.isValidExpToParse("  ")).toEqual(false)
    // expect(isValidTextToParse(undefined)).toEqual(false)
    // expect(isValidTextToParse(null)).toEqual(false)
    expect(ItemsValidator.isValidExpToParse(' . ')).toBe(false);
    expect(
      ItemsValidator.isValidExpToParse(`


    `),
    ).toBe(false);
  })

  test("wrong operators", () => {
    expect(ItemsValidator.isValidExpToParse("1400+4555-")).toEqual(false)
    expect(ItemsValidator.isValidExpToParse("14*45*")).toEqual(false)
    expect(ItemsValidator.isValidExpToParse("*+-/")).toEqual(false)
    expect(ItemsValidator.isValidExpToParse('sdfa-')).toEqual(false)
    expect(ItemsValidator.isValidExpToParse('-')).toEqual(false)
    expect(ItemsValidator.isValidExpToParse('400--600')).toEqual(false)
    expect(ItemsValidator.isValidExpToParse('100+-3000')).toEqual(false)
    expect(ItemsValidator.isValidExpToParse('asdf-450+898*7*')).toEqual(false)
    expect(ItemsValidator.isValidExpToParse('*88855+555+8888')).toEqual(false)
    expect(ItemsValidator.isValidExpToParse('*88855+555+8888')).toEqual(false)
    expect(ItemsValidator.isValidExpToParse('8855 + 7100 [23,   ')).toEqual(false)
    expect(ItemsValidator.isValidExpToParse("1400")).toEqual(false)
    expect(ItemsValidator.isValidExpToParse('234234423')).toBe(false);
    expect(ItemsValidator.isValidExpToParse('234234423+-342423-7888')).toBe(false);
    expect(ItemsValidator.isValidExpToParse('uqweruqeqe')).toBe(false);
    expect(ItemsValidator.isValidExpToParse('----------')).toBe(false);
    expect(ItemsValidator.isValidExpToParse('+-\\*=23423')).toBe(false);
    expect(ItemsValidator.isValidExpToParse('asdfad[1, - 234')).toBe(false);
    expect(ItemsValidator.isValidExpToParse('(1+3)*234[2,')).toBe(false);
    expect(ItemsValidator.isValidExpToParse('45000 + (1+3)*234[2,]')).toEqual(true);
    expect(ItemsValidator.isValidExpToParse('2+4-55\\*=23423')).toBe(false);
    expect(ItemsValidator.isValidExpToParse('sdfasdf - 324324 +')).toBe(false);
    expect(ItemsValidator.isValidExpToParse('sd(fas(d)fa - 234[1,  + 23234324[]')).toBe(false);
  })
  test("wrong items", () => {
    expect(ItemsValidator.isValidExpToParse('toy oshi -sadfasd')).toEqual(false)
    expect(ItemsValidator.isValidExpToParse('toy oshi ------')).toEqual(false)
    expect(ItemsValidator.isValidExpToParse('to\'y oshi - narxi yoq')).toEqual(false)
    expect(ItemsValidator.isValidExpToParse('to\'y oshi - []')).toEqual(false)
    expect(ItemsValidator.isValidExpToParse('to\'y oshi - ()')).toEqual(false)
  })
  describe("valid expressions", () => {
    test("simple calculation", () => {
      expect(ItemsValidator.isValidExpToParse("1400+4555")).toEqual(true)
      expect(ItemsValidator.isValidExpToParse("14*45*78")).toEqual(true)
      expect(ItemsValidator.isValidExpToParse("78*986+556-5/32")).toEqual(true)
    })
    test("with item", () => {
      expect(ItemsValidator.isValidExpToParse('zig\'ir osh - 4000 * 2')).toEqual(true)
      expect(ItemsValidator.isValidExpToParse('крыльца item - 2000 - (34+89-78) * 6000 + 7800/2')).toEqual(true)
    })
    test("multi items list", () => {
      expect(ItemsValidator.isValidExpToParse('крыльца item - 4000 * 2 \n item 2 - (34+89-78) * 6000 + 7800/2')).toEqual(true)
      expect(ItemsValidator.isValidExpToParse(`Osh [ 1, 2] - 23000`)).toEqual(true);
      expect(
        ItemsValidator.isValidExpToParse(`Osh [1, 2] - 43 000 so'm
    Sho'rva[4] - 23 400 so'm
    Choy - 3500 so'm
    Non - 4000 so'm
    Xizmat - 12%


    [@user1, tyun, koang\'ip, hwoa sdfa]`),
      ).toBe(true);
      expect(
        ItemsValidator.isValidExpToParse(`
    tok - 34000
uy - 3*50000
non - 3 * 12000
tash [2,3] - 4*3550

[@user_bsdfas, Kun G'olib]
`),
      ).toBe(true);
      expect(ItemsValidator.isValidExpToParse('2400+2*4500+(3-5+8*2)*100 - 900')).toBe(true);
      expect(ItemsValidator.isValidExpToParse('(2400+2*4500+(3-5+8*2)*100 - 900)*100/500')).toBe(true);
    })
  })
  describe("brackets", () => {
    test("wrong brackets", () => {
      expect(ItemsValidator.isValidExpToParse("140(0+4[5)55-12")).toEqual(false)
      expect(ItemsValidator.isValidExpToParse("140(10+45)55-123")).toEqual(false)
      expect(ItemsValidator.isValidExpToParse("140*[10+45-(24]+55-123")).toEqual(false)
    })
    test("correct brackets", () => {
      expect(ItemsValidator.isValidExpToParse("xizmat uchun - (24+45)*55-123")).toEqual(true)
      expect(ItemsValidator.isValidExpToParse("140*(340+45)/55-12")).toEqual(true)
      expect(ItemsValidator.isValidExpToParse("2*55-5000+140/(10+45)")).toEqual(true)
    })
  })
})
