Package translate :: Package search :: Module test_match

[hide private]
[frames] | no frames]

# Source Code for Module translate.search.test_match

     1  from translate.search import match
     2  from translate.storage import csvl10n
     3
     4 -class TestMatch:
     5      """Test the matching class"""
     6 -    def candidatestrings(self, units):
     7          """returns only the candidate strings out of the list with (score, string) tuples"""
     8          return [unit.source for unit in units]
     9
    10 -    def buildcsv(self, sources, targets=None):
    11          """Build a csvfile store with the given source and target strings"""
    12          if targets is None:
    13              targets = sources
    14          else:
    15              assert len(sources) == len(targets)
    16          csvfile = csvl10n.csvfile()
    17          for source, target in zip(sources, targets):
    18              unit = csvfile.addsourceunit(source)
    19              unit.target = target
    20          return csvfile
    21
    22 -    def test_matching(self):
    23          """Test basic matching"""
    24          csvfile = self.buildcsv(["hand", "asdf", "fdas", "haas", "pond"])
    25          matcher = match.matcher(csvfile)
    26          candidates = self.candidatestrings(matcher.matches("hond"))
    27          candidates.sort()
    28          assert candidates == ["hand", "pond"]
    29          message = "Ek skop die bal"
    30          csvfile = self.buildcsv(
    31              ["Hy skop die bal",
    32              message,
    33              "Jannie skop die bal",
    34              "Ek skop die balle",
    35              "Niemand skop die bal nie"])
    36          matcher = match.matcher(csvfile)
    37          candidates = self.candidatestrings(matcher.matches(message))
    38          assert len(candidates) == 3
    39          #test that the 100% match is indeed first:
    40          assert candidates[0] == message
    41          candidates.sort()
    42          assert candidates[1:] == ["Ek skop die balle", "Hy skop die bal"]
    43
    44 -    def test_multiple_store(self):
    45          """Test using multiple datastores"""
    46          csvfile1 = self.buildcsv(["hand", "asdf", "fdas"])
    47          csvfile2 = self.buildcsv(["haas", "pond"])
    48          matcher = match.matcher([csvfile1, csvfile2])
    49          candidates = self.candidatestrings(matcher.matches("hond"))
    50          candidates.sort()
    51          assert candidates == ["hand", "pond"]
    52          message = "Ek skop die bal"
    53          csvfile1 = self.buildcsv(
    54              ["Hy skop die bal",
    55              message,
    56              "Jannie skop die bal"])
    57          csvfile2 = self.buildcsv(
    58              ["Ek skop die balle",
    59              "Niemand skop die bal nie"])
    60          matcher = match.matcher([csvfile1, csvfile2])
    61          candidates = self.candidatestrings(matcher.matches(message))
    62          assert len(candidates) == 3
    63          #test that the 100% match is indeed first:
    64          assert candidates[0] == message
    65          candidates.sort()
    66          assert candidates[1:] == ["Ek skop die balle", "Hy skop die bal"]
    67
    68 -    def test_extendtm(self):
    69          """Test that we can extend the TM after creation."""
    70          message = "Open file..."
    71          csvfile1 = self.buildcsv(["Close application", "Do something"])
    72          matcher = match.matcher([csvfile1])
    73          candidates = self.candidatestrings(matcher.matches(message))
    74          assert len(candidates) == 0
    75          csvfile2 = self.buildcsv(["Open file"])
    76          matcher.extendtm(csvfile2.units, store=csvfile2)
    77          candidates = self.candidatestrings(matcher.matches(message))
    78          assert len(candidates) == 1
    79          assert candidates[0] == "Open file"
    80
    81 -    def test_terminology(self):
    82          csvfile = self.buildcsv(["file", "computer", "directory"])
    83          matcher = match.terminologymatcher(csvfile)
    84          candidates = self.candidatestrings(matcher.matches("Copy the files from your computer"))
    85          candidates.sort()
    86          assert candidates == ["computer", "file"]
    87