Exemplo n.º 1
0
def get_case(field_type, values):
    """ Determines the case of a list or dictionary of values.
        Args:
          - type:    if not == 'string', will return 'n/a'
          - values:  could be either dictionary or list.  If it's a list, then
                     it will only examine the keys.
        Returns:
          - one of:  'mixed','lower','upper','unknown'
        Misc notes:
          - "unknown values" are ignored
          - empty values list/dict results in 'unknown' result
        To do:
          - add consistency factor
        Test coverage:
          - complete, via test harness
    """
    freq = collections.defaultdict(int)
    case = None

    if field_type != 'string':
        return 'n/a'

    # count occurances of each case field_type in values:
    for key in values:
        if typer.is_unknown(key):
            freq['unk']    += 1
        elif typer.is_integer(key):     # will be ignoring these
            freq['number'] += 1
        elif typer.is_float(key):       # will be ignoring these
            freq['number'] += 1
        elif key.islower():
            freq['lower'] += 1
        elif key.isupper():
            freq['upper'] += 1
        else:
            freq['mixed'] += 1

    # evaluate frequency distribution:
    if 'mixed' in freq:
        case = 'mixed'
    elif ('lower' in freq and 'upper' not in freq):
        case = 'lower'
    elif ('lower' not in freq and 'upper' in freq):
        case = 'upper'
    elif ('lower' in freq and 'upper' in freq):
        case = 'mixed'
    else:
        case = 'unknown'

    return case
Exemplo n.º 2
0
def get_case(field_type, values):
    """ Determines the case of a list or dictionary of values.
        Args:
          - type:    if not == 'string', will return 'n/a'
          - values:  could be either dictionary or list.  If it's a list, then
                     it will only examine the keys.
        Returns:
          - one of:  'mixed','lower','upper','unknown'
        Misc notes:
          - "unknown values" are ignored
          - empty values list/dict results in 'unknown' result
        To do:
          - add consistency factor
        Test coverage:
          - complete, via test harness
    """
    freq = collections.defaultdict(int)
    case = None

    if field_type != 'string':
        return 'n/a'

    # count occurances of each case field_type in values:
    for key in values:
        if typer.is_unknown(key):
            freq['unk'] += 1
        elif typer.is_integer(key):  # will be ignoring these
            freq['number'] += 1
        elif typer.is_float(key):  # will be ignoring these
            freq['number'] += 1
        elif key.islower():
            freq['lower'] += 1
        elif key.isupper():
            freq['upper'] += 1
        else:
            freq['mixed'] += 1

    # evaluate frequency distribution:
    if 'mixed' in freq:
        case = 'mixed'
Exemplo n.º 3
0
 def test_type_a01_is_integer(self):
     self.assertTrue(mod.is_integer('3'))
     self.assertTrue(mod.is_integer('-3'))
     self.assertTrue(mod.is_integer(3))
     self.assertTrue(mod.is_integer(-3))
     self.assertFalse(mod.is_integer('b'))
     self.assertFalse(mod.is_integer(''))
     self.assertFalse(mod.is_integer(' '))
     self.assertFalse(mod.is_integer('$3'))
     self.assertFalse(mod.is_integer('4,333.22'))
     self.assertFalse(mod.is_integer('33.22'))
     self.assertFalse(mod.is_integer(3.3))
     self.assertFalse(mod.is_integer(None))
Exemplo n.º 4
0
 def test_type_a01_is_integer(self):
     self.assertTrue(mod.is_integer('3'))
     self.assertTrue(mod.is_integer('-3'))
     self.assertTrue(mod.is_integer(3))
     self.assertTrue(mod.is_integer(-3))
     self.assertFalse(mod.is_integer('b'))
     self.assertFalse(mod.is_integer(''))
     self.assertFalse(mod.is_integer(' '))
     self.assertFalse(mod.is_integer('$3'))
     self.assertFalse(mod.is_integer('4,333.22'))
     self.assertFalse(mod.is_integer('33.22'))
     self.assertFalse(mod.is_integer(3.3))
     self.assertFalse(mod.is_integer(None))
Exemplo n.º 5
0
 def test_is_integer_basics(self):
     assert mod.is_integer('3')
     assert mod.is_integer('-3')
     assert mod.is_integer(3)
     assert mod.is_integer(-3)
     assert mod.is_integer('b')        is False
     assert mod.is_integer('')         is False
     assert mod.is_integer(' ')        is False
     assert mod.is_integer('$3')       is False
     assert mod.is_integer('4,333.22') is False
     assert mod.is_integer('33.22')    is False
     assert mod.is_integer(3.3)        is False
     assert mod.is_integer(None)       is False
Exemplo n.º 6
0
 def test_is_integer_basics(self):
     assert mod.is_integer("3")
     assert mod.is_integer("-3")
     assert mod.is_integer(3)
     assert mod.is_integer(-3)
     assert mod.is_integer("b") is False
     assert mod.is_integer("") is False
     assert mod.is_integer(" ") is False
     assert mod.is_integer("$3") is False
     assert mod.is_integer("4,333.22") is False
     assert mod.is_integer("33.22") is False
     assert mod.is_integer(3.3) is False
     assert mod.is_integer(None) is False