"use strict";

describe('Walkontable.RowFilter', function () {
  describe('offsetted', function () {
    it('should return n, when offset == 0 && n == 0', function () {
      var filter = new Walkontable.RowFilter();
      filter.offset = 0;
      filter.total = 100;
      expect(filter.offsetted(0)).toEqual(0);
    });
    it('should return n, when offset == 0 && n == 5', function () {
      var filter = new Walkontable.RowFilter();
      filter.offset = 0;
      filter.total = 100;
      expect(filter.offsetted(5)).toEqual(5);
    });
    it('should return n + 1, when offset == 1 && n == 0', function () {
      var filter = new Walkontable.RowFilter();
      filter.offset = 1;
      filter.total = 100;
      expect(filter.offsetted(0)).toEqual(1);
    });
    it('should return n + 5, when offset == 5 && n == 0', function () {
      var filter = new Walkontable.RowFilter();
      filter.offset = 5;
      filter.total = 100;
      expect(filter.offsetted(0)).toEqual(5);
    });
  });
  describe('unOffsetted', function () {
    it('should return n, when offset == 0 && n == 0', function () {
      var filter = new Walkontable.RowFilter();
      filter.offset = 0;
      filter.total = 100;
      expect(filter.unOffsetted(0)).toEqual(0);
    });
    it('should return n, when offset == 0 && n == 5', function () {
      var filter = new Walkontable.RowFilter();
      filter.offset = 0;
      filter.total = 100;
      expect(filter.unOffsetted(5)).toEqual(5);
    });
    it('should return n - 1, when offset == 1 && n == 0', function () {
      var filter = new Walkontable.RowFilter();
      filter.offset = 1;
      filter.total = 100;
      expect(filter.unOffsetted(1)).toEqual(0);
    });
    it('should return n - 5, when offset == 5 && n == 0', function () {
      var filter = new Walkontable.RowFilter();
      filter.offset = 5;
      filter.total = 100;
      expect(filter.unOffsetted(5)).toEqual(0);
    });
  });
  describe('renderedToSource', function () {
    it('should translate visible column to source', function () {
      var filter = new Walkontable.RowFilter();
      filter.fixedCount = 1; // only cell index 0 falls into this

      filter.offset = 4;
      expect(filter.renderedToSource(0)).toEqual(4);
      expect(filter.renderedToSource(1)).toEqual(5);
      expect(filter.renderedToSource(2)).toEqual(6);
    });
  });
});