import {Item, Summary} from '../../types/types';

const testCases: TestCaseObj[] = [
  {
    input: '4*5000[1,2] + (2+5)*2000[2,3] + 12000 + 4000 + 12%',
    summary: {
      members: [
        {
          index: 1,
          totalExpression: '10000(4*5000/2) + 4000(12000/3) + 1333.33(4000/3) + 1840(15333.33*0.12)',
          total: 17173.33,
          productNames: ["Item 1", "Item 3", "Item 4", "Item 5"]
        },
        {
          index: 2,
          totalExpression: '10000(4*5000/2) + 4000(2*2000) + 4000(12000/3) + 1333.33(4000/3) + 2320(19333.33*0.12)',
          total: 21653.33,
          productNames: ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5"]
        },
        {
          index: 3,
          totalExpression: '10000(5*2000) + 4000(12000/3) + 1333.33(4000/3) + 1840(15333.33*0.12)',
          total: 17173.33,
          productNames: ["Item 2", "Item 3", "Item 4", "Item 5"]
        },
      ],
      membersCount: 3,
      total: 55999.99,
    },
    output: [
      {
        name: 'Item 1',
        value: 20000,
        originValue: '4*5000',
        valueType: 'currency',
        quantity: 4,
        unitValue: 5000,
        members: [1, 2],
        order: 1,
        values: {},
      },
      {
        name: 'Item 2',
        value: 14000,
        originValue: '(2+5)*2000',
        valueType: 'currency',
        quantity: 7,
        unitValue: 2000,
        members: [2, 3],
        order: 2,
        values: {
          2: {
            origin: '2*2000',
            total: 4000,
          },
          3: {
            origin: '5*2000',
            total: 10000,
          },
        },
      },
      {
        name: 'Item 3',
        value: 12000,
        originValue: '12000',
        valueType: 'currency',
        quantity: 1,
        unitValue: 12000,
        members: [],
        order: 3,
        values: {},
      },
      {
        name: 'Item 4',
        value: 4000,
        originValue: '4000',
        valueType: 'currency',
        quantity: 1,
        unitValue: 4000,
        members: [],
        order: 4,
        values: {},
      },
      {
        name: 'Item 5',
        value: 12,
        originValue: '12%',
        valueType: 'percentage',
        quantity: 1,
        unitValue: 12,
        members: [],
        order: 5,
        values: {},
      },
    ],
    fails: false
  },
  // {
  //   input: "uq-23\nnsdfsd-34n",
  //   summary: { members: [], membersCount: 0, total: 0 },
  //   output: []
  // },
  {
    input: '-',
    summary: {members: [], membersCount: 0, total: 0},
    output: [],
    notValid: true
  },
  {
    input: 'non 3000',
    summary: {members: [], membersCount: 0, total: 0},
    output: [],
    notValid: true
  },
  // {
  //   input: `un-3000
  //     olma[1]-23
  //     qolganlari-400000
  //     shu[3,4,5]-232
  //     ana-mana[8] -34`,
  //   summary: {
  //     total: 0,
  //     members: [],
  //     membersCount: 8,
  //   },
  //   output: [],
  // },

  {
    input: `koza[1] - 32000
            Frekodel[2] - 20000
            Non - 8000
            Limon-choy - 5000 -2000
            Xizmat - 15%`,
    summary: {members: [
        {
          index: 1,
          totalExpression: "32000(32000/1) + 4000(8000/2) + 1500(3000/2) + 5625(37500*0.15)",
          total: 43125,
          productNames: ["koza", "Non", "Limon-choy", "Xizmat"]
        },
        {
          index: 2,
          totalExpression: "20000(20000/1) + 4000(8000/2) + 1500(3000/2) + 3825(25500*0.15)",
          total: 29325,
          productNames: ["Frekodel",  "Non","Limon-choy", "Xizmat"]
        },
      ], total: 72450, inputText: '', membersCount: 2},
  output: [
    {
      name: 'koza',
      value: 32000,
      originValue: "32000",
      valueType: 'currency',
      quantity: 1,
      unitValue: 32000,
      members: [1],
      order: 1,
      values: {}
    },
    {
      name: "Frekodel",
      value: 20000,
      originValue: "20000",
      valueType: 'currency',
      quantity: 1,
      unitValue: 20000,
      members: [2],
      order: 2,
      values: {}
    },
    {
      name: 'Non',
      value: 8000,
      originValue: "8000",
      valueType: 'currency',
      quantity: 1,
      unitValue: 8000,
      members: [],
      order: 3,
      values: {},

    },
    {
      name: 'Limon-choy',
      value: 3000,
      originValue: "5000 -2000",
      valueType: 'currency',
      quantity: 1,
      unitValue: 3000,
      members: [],
      order: 4,
      values: {}
    },
    {
      name: 'Xizmat',
      value: 15,
      originValue: '15%',
      valueType: 'percentage',
      quantity: 1,
      unitValue: 15,
      members: [],
      order: 5,
      values: {}
    },
  ] as Item[],
  },
  {
    input: `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]
    `,
    summary: {
      membersCount: 4,
      total: 82768,
      members: [
        {
          index: 1,
          username: '@user1',
          totalExpression: '21500(43 000 so\'m/2) + 875(3500/4) + 1000(4000/4) + 2805(23375*0.12)',
          total: 26180,
          productNames: ["Osh", "Choy", "Non", "Xizmat"]
        },
        {
          index: 2,
          username: 'tyun',
          totalExpression: '21500(43 000 so\'m/2) + 875(3500/4) + 1000(4000/4) + 2805(23375*0.12)',
          total: 26180,
          productNames: ["Osh", "Choy", "Non", "Xizmat"]
        },
        {
          index: 3,
          username: 'koang\'ip',
          totalExpression: '875(3500/4) + 1000(4000/4) + 225(1875*0.12)',
          total: 2100,
          productNames: ["Choy", "Non", "Xizmat"]
        },
        {
          index: 4,
          username: 'hwoa sdfa',
          totalExpression: '23400(23 400 so\'m/1) + 875(3500/4) + 1000(4000/4) + 3033(25275*0.12)',
          total: 28308,
          productNames: ["Sho'rva", "Choy", "Non", "Xizmat"]
        },
      ],
    },
    output: [
      {
        name: 'Osh',
        value: 43000,
        originValue: "43 000 so'm",
        valueType: 'currency',
        quantity: 1,
        unitValue: 43000,
        members: [1, 2],
        order: 1,
        values: {}
      },
      {
        name: "Sho'rva",
        value: 23400,
        originValue: "23 400 so'm",
        valueType: 'currency',
        quantity: 1,
        unitValue: 23400,
        members: [4],
        order: 2,
        values: {}
      },
      {
        name: 'Choy',
        value: 3500,
        originValue: "3500 so'm",
        valueType: 'currency',
        quantity: 1,
        unitValue: 3500,
        members: [],
        order: 3,
        values: {},

      },
      {
        name: 'Non',
        value: 4000,
        originValue: "4000 so'm",
        valueType: 'currency',
        quantity: 1,
        unitValue: 4000,
        members: [],
        order: 4,
        values: {}
      },
      {
        name: 'Xizmat',
        value: 12,
        originValue: '12%',
        valueType: 'percentage',
        quantity: 1,
        unitValue: 12,
        members: [],
        order: 5,
        values: {}
      },
    ] as Item[],
  },
  {
    input: 'Salfetka 4 - 13500 + 445\n sut 1l - 23 000, \nmuzqaymoq 1l - 4 000',
    output: [
      {
        name: 'Salfetka 4',
        value: 13945,
        originValue: '13500 + 445',
        valueType: 'currency',
        quantity: 1,
        unitValue: 13945,
        members: [],
        order: 1,
        values: {}
      },
      {
        name: 'sut 1l',
        value: 23000,
        originValue: '23 000,',
        valueType: 'currency',
        quantity: 1,
        unitValue: 23000,
        members: [],
        order: 2,
        values: {}
      },
      {
        name: 'muzqaymoq 1l',
        value: 4000,
        originValue: '4 000',
        valueType: 'currency',
        quantity: 1,
        unitValue: 4000,
        members: [],
        order: 3,
        values: {}
      },
    ],

    summary: {
      members: [
        {
          index: 1,
          totalExpression: '13945(13945/1) + 23000(23000/1) + 4000(4000/1)',
          total: 40945,
          productNames: ["Salfetka 4", "sut 1l", "muzqaymoq 1l"]
        },
      ],
      membersCount: 1,
      total: 40945,
    },
  },
];
export default testCases;
type TestCaseObj = {
  input: string;
  summary: Summary;
  output: Item[];
  fails?: boolean
  notValid?: boolean
}
