# -*- coding: utf-8 -*-
require 'helper'
require 'write_xlsx'
require 'stringio'
class TestWriteDataValidation02 < Minitest::Test
def setup
@workbook = WriteXLSX.new(StringIO.new)
@worksheet = @workbook.add_worksheet('')
end
def test_write_data_validations_between_1_and_10
@worksheet.data_validation('B5',
:validate => 'integer',
:criteria => 'between',
:minimum => 1,
:maximum => 10
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '110'
assert_equal(expected, result)
end
def test_write_data_validations_not_between_1_and_10
@worksheet.data_validation('B5',
:validate => 'integer',
:criteria => 'not between',
:minimum => 1,
:maximum => 10
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '110'
assert_equal(expected, result)
end
def test_write_data_validations_integer_equal_1
['equal to', '=', '=='].each do |operator|
workbook = WriteXLSX.new(StringIO.new)
worksheet = workbook.add_worksheet('')
worksheet.data_validation('B5',
:validate => 'integer',
:criteria => operator,
:value => 1
)
worksheet.__send__('write_data_validations')
result = worksheet.instance_variable_get(:@writer).string
expected = '1'
assert_equal(expected, result)
end
end
def test_write_data_validations_integer_not_equal_1
['not equal to', '<>', '!='].each do |operator|
workbook = WriteXLSX.new(StringIO.new)
worksheet = workbook.add_worksheet('')
worksheet.data_validation('B5',
:validate => 'integer',
:criteria => operator,
:value => 1
)
worksheet.__send__('write_data_validations')
result = worksheet.instance_variable_get(:@writer).string
expected = '1'
assert_equal(expected, result)
end
end
def test_write_data_validations_integer_greater_than_1
['greater than', '>'].each do |operator|
workbook = WriteXLSX.new(StringIO.new)
worksheet = workbook.add_worksheet('')
worksheet.data_validation('B5',
:validate => 'integer',
:criteria => operator,
:value => 1
)
worksheet.__send__('write_data_validations')
result = worksheet.instance_variable_get(:@writer).string
expected = '1'
assert_equal(expected, result)
end
end
def test_write_data_validations_integer_less_than_1
['less than', '<'].each do |operator|
workbook = WriteXLSX.new(StringIO.new)
worksheet = workbook.add_worksheet('')
worksheet.data_validation('B5',
:validate => 'integer',
:criteria => operator,
:value => 1
)
worksheet.__send__('write_data_validations')
result = worksheet.instance_variable_get(:@writer).string
expected = '1'
assert_equal(expected, result)
end
end
def test_write_data_validations_integer_greater_than_or_equal_to_1
['greater than or equal to', '>='].each do |operator|
workbook = WriteXLSX.new(StringIO.new)
worksheet = workbook.add_worksheet('')
worksheet.data_validation('B5',
:validate => 'integer',
:criteria => operator,
:value => 1
)
worksheet.__send__('write_data_validations')
result = worksheet.instance_variable_get(:@writer).string
expected = '1'
assert_equal(expected, result)
end
end
def test_write_data_validations_integer_less_than_or_equal_to_1
['less than or equal to', '<='].each do |operator|
workbook = WriteXLSX.new(StringIO.new)
worksheet = workbook.add_worksheet('')
worksheet.data_validation('B5',
:validate => 'integer',
:criteria => operator,
:value => 1
)
worksheet.__send__('write_data_validations')
result = worksheet.instance_variable_get(:@writer).string
expected = '1'
assert_equal(expected, result)
end
end
def test_write_data_validations_integer_between_1_and_10_not_ignore_blank
@worksheet.data_validation('B5',
:validate => 'integer',
:criteria => 'between',
:minimum => 1,
:maximum => 10,
:ignore_blank => 0
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '110'
assert_equal(expected, result)
end
def test_write_data_validations_integer_between_1_and_10_error_type_warning
@worksheet.data_validation('B5',
:validate => 'integer',
:criteria => 'between',
:minimum => 1,
:maximum => 10,
:error_type => 'warning'
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '110'
assert_equal(expected, result)
end
def test_write_data_validations_integer_between_1_and_10_error_type_information
@worksheet.data_validation('B5',
:validate => 'integer',
:criteria => 'between',
:minimum => 1,
:maximum => 10,
:error_type => 'information'
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '110'
assert_equal(expected, result)
end
def test_write_data_validations_integer_between_1_and_10_with_input_title
@worksheet.data_validation('B5',
:validate => 'integer',
:criteria => 'between',
:minimum => 1,
:maximum => 10,
:input_title => 'Input title January'
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '110'
assert_equal(expected, result)
end
def test_write_data_validations_integer_between_1_and_10_with_input_title_and_input_message
@worksheet.data_validation('B5',
:validate => 'integer',
:criteria => 'between',
:minimum => 1,
:maximum => 10,
:input_title => 'Input title January',
:input_message => 'Input message February'
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '110'
assert_equal(expected, result)
end
def test_write_data_validations_integer_between_1_and_10_with_input_title_and_input_message_and_error_title
@worksheet.data_validation('B5',
:validate => 'integer',
:criteria => 'between',
:minimum => 1,
:maximum => 10,
:input_title => 'Input title January',
:input_message => 'Input message February',
:error_title => 'Error title March'
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '110'
assert_equal(expected, result)
end
def test_write_data_validations_integer_between_1_and_10_with_input_title_and_input_message_and_error_title_and_error_message
@worksheet.data_validation('B5',
:validate => 'integer',
:criteria => 'between',
:minimum => 1,
:maximum => 10,
:input_title => 'Input title January',
:input_message => 'Input message February',
:error_title => 'Error title March',
:error_message => 'Error message April'
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '110'
assert_equal(expected, result)
end
def test_write_data_validations_integer_between_1_and_10_with_input_title_and_input_message_and_error_title_and_error_message_and_show_input
@worksheet.data_validation('B5',
:validate => 'integer',
:criteria => 'between',
:minimum => 1,
:maximum => 10,
:input_title => 'Input title January',
:input_message => 'Input message February',
:error_title => 'Error title March',
:error_message => 'Error message April',
:show_input => 0
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '110'
assert_equal(expected, result)
end
def test_write_data_validations_integer_between_1_and_10_with_input_title_and_input_message_and_error_title_and_error_message_and_show_input_and_show_error
@worksheet.data_validation('B5',
:validate => 'integer',
:criteria => 'between',
:minimum => 1,
:maximum => 10,
:input_title => 'Input title January',
:input_message => 'Input message February',
:error_title => 'Error title March',
:error_message => 'Error message April',
:show_input => 0,
:show_error => 0
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '110'
assert_equal(expected, result)
end
def test_write_data_validation_validate_any_value_on_its_own_shouldnt_produce_a_DV_record
@worksheet.data_validation('B5', :validate => 'any')
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = ''
assert_equal(expected, result)
end
def test_write_data_validation_decimal_equal_to_12345
@worksheet.data_validation('B5',
:validate => 'decimal',
:criteria => '==',
:value => 1.2345
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '1.2345'
assert_equal(expected, result)
end
def test_write_data_validation_list_a_bb_ccc
@worksheet.data_validation('B5',
:validate => 'list',
:source => ['a', 'bb', 'ccc']
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '"a,bb,ccc"'
assert_equal(expected, result)
end
def test_write_data_validation_list_a_bb_ccc_without_dropdown
@worksheet.data_validation('B5',
:validate => 'list',
:source => ['a', 'bb', 'ccc'],
:dropdown => 0
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '"a,bb,ccc"'
assert_equal(expected, result)
end
def test_write_data_validation_list_absolute_range
@worksheet.data_validation(
'A1:A1',
:validate => 'list',
:source => '=$D$1:$D$5'
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '$D$1:$D$5'
assert_equal(expected, result)
end
def test_write_data_validation_date_equal_to_39653
@worksheet.data_validation(
'B5',
:validate => 'date',
:criteria => '==',
:value => 39653
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '39653'
assert_equal(expected, result)
end
def test_write_data_validation_date_equal_to_2008_07_24T
@worksheet.data_validation(
'B5',
:validate => 'date',
:criteria => '==',
:value => '2008-07-24T'
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '39653'
assert_equal(expected, result)
end
def test_write_data_validation_date_between_range
@worksheet.data_validation(
'B5',
:validate => 'date',
:criteria => 'between',
:minimum => '2008-01-01T',
:maximum => '2008-12-12T'
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '3944839794'
assert_equal(expected, result)
end
def test_write_data_validation_time_equal_to_05
@worksheet.data_validation(
'B5:B5',
:validate => 'time',
:criteria => '==',
:value => 0.5
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '0.5'
assert_equal(expected, result)
end
def test_write_data_validation_time_equal_to_1200
@worksheet.data_validation(
'B5',
:validate => 'time',
:criteria => '==',
:value => 'T12:00:00'
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '0.5'
assert_equal(expected, result)
end
def test_write_data_validation_custom_equal_to_10
@worksheet.data_validation(
'B5',
:validate => 'custom',
:criteria => '==',
:value => 10
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '10'
assert_equal(expected, result)
end
def test_write_data_validations_between_1_and_10_A1_cell
@worksheet.data_validation(
'B5',
:validate => 'integer',
:criteria => 'between',
:minimum => 1,
:maximum => 10
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '110'
assert_equal(expected, result)
end
def test_write_data_validations_between_1_and_10_A1_range
@worksheet.data_validation(
'B5:B10',
:validate => 'integer',
:criteria => 'between',
:minimum => 1,
:maximum => 10
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '110'
assert_equal(expected, result)
end
def test_write_data_validations_between_1_and_10_row_col_cell
@worksheet.data_validation(
4, 1,
:validate => 'integer',
:criteria => 'between',
:minimum => 1,
:maximum => 10
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '110'
assert_equal(expected, result)
end
def test_write_data_validations_between_1_and_10_row_col_range
@worksheet.data_validation(
4, 1, 9, 1,
:validate => 'integer',
:criteria => 'between',
:minimum => 1,
:maximum => 10
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '110'
assert_equal(expected, result)
end
def test_write_data_validations_multiple_style_cells
@worksheet.data_validation(
4, 1,
:validate => 'integer',
:criteria => 'between',
:minimum => 1,
:maximum => 10,
:other_cells => [ [ 4, 3, 4, 3 ] ]
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '110'
assert_equal(expected, result)
end
def test_write_data_validations_multiple_style_cells_2
@worksheet.data_validation(
4, 1,
:validate => 'integer',
:criteria => 'between',
:minimum => 1,
:maximum => 10,
:other_cells => [ [ 6, 1, 6, 1 ], [ 8, 1, 8, 1 ] ]
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '110'
assert_equal(expected, result)
end
def test_write_data_validations_multiple_style_cells_3
@worksheet.data_validation(
4, 1, 8, 1,
:validate => 'integer',
:criteria => 'between',
:minimum => 1,
:maximum => 10,
:other_cells => [ [ 3, 3, 3, 3 ] ]
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '110'
assert_equal(expected, result)
end
def test_write_data_validations_multiple_validation
@worksheet.data_validation(
'B5',
:validate => 'integer',
:criteria => '>',
:value => 10
)
@worksheet.data_validation(
'C10',
:validate => 'integer',
:criteria => '<',
:value => 10
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '1010'
assert_equal(expected, result)
end
def test_write_data_validations_any_with_an_input_message_should_produce_a_DV_record
@worksheet.data_validation(
'B5',
:validate => 'any',
:input_title => 'Input title January',
:input_message => 'Input message February'
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = ''
assert_equal(expected, result)
end
def test_write_data_validation_length_validation
@worksheet.data_validation(
'A1',
:validate => 'length',
:criteria => 'between',
:minimum => 5,
:maximum => 10
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '510'
assert_equal(expected, result)
end
def test_write_data_validation_length_validation_2
@worksheet.data_validation(
'A1',
:validate => 'length',
:criteria => '>',
:value => 5
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '5'
assert_equal(expected, result)
end
def test_write_data_validation_date_auto_between
@workbook.instance_variable_set(:@date_1904, 0)
@worksheet.data_validation(
'B5',
:validate => 'date',
:criteria => 'between',
:minimum => '2018-01-01T',
:maximum => '=TODAY()'
)
@worksheet.__send__('write_data_validations')
result = @worksheet.instance_variable_get(:@writer).string
expected = '43101TODAY()'
assert_equal(expected, result)
end
end