code: def test_should_parse_valid_versions(self):
      # Given
      valid_versions = [
          "0.0.4.18",  # Version with subpatch number
          "1.0.4.18",  # Version with subpatch number
          "0.0.4",
          "0.0.4.0",
          "1.2.3",
          "10.20.30",
          "1.1.2-prerelease+meta",
          "1.1.2+meta",
          "1.1.2+meta-valid",
          "1.0.0-alpha",
          "1.0.0-beta",
          "1.0.0-alpha.beta",
          "1.0.0-alpha.beta.1",
          "1.0.0-alpha.1",
          "1.0.0-alpha0.valid",
          "1.0.0-alpha.0valid",
          "1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okay",
          "1.0.0-rc.1+build.1",
          "2.0.0-rc.1+build.123",
          "1.2.3-beta",
          "10.2.3-DEV-SNAPSHOT",
          "1.2.3-SNAPSHOT-123",
          "1.0.0",
          "2.0.0",
          "1.1.7",
          "2.0.0+build.1848",
          "2.0.1-alpha.1227",
          "1.0.0-alpha+beta",
          "1.2.3----RC-SNAPSHOT.12.9.1--.12+788",
          "1.2.3----R-S.12.9.1--.12+meta",
          "1.2.3----RC-SNAPSHOT.12.9.1--.12",
          "1.0.0+0.build.1-rc.10000aaa-kk-0.1",
          "99999999999999999999999.999999999999999999.99999999999999999",
          "1.0.0-0A.is.legal",
      ]
  
      for v in valid_versions:
          msg = "Failed to parser valid version '%s'" % v
          with self.fail_if_exception(msg):
              # When / Then
              parse_version(v)
  
imports: from __future__ import unicode_literals
  import logging
  from future.builtins import object, str
  from future.utils import iteritems
  from mock import MagicMock
  from snips_nlu import __model_version__, __version__
  from snips_nlu.common.dict_utils import LimitedSizeDict
  from snips_nlu.common.log_utils import DifferedLoggingMessage
  from snips_nlu.common.utils import ranges_overlap, replace_entities_with_placeholders, parse_version
  from snips_nlu.constants import END, START
  from snips_nlu.preprocessing import tokenize_light
  from snips_nlu.tests.utils import SnipsTest
label_desc: Use image node_id 1 for calling the TestVersion obj's underlying member method code with example usage: obj.test_should_parse_valid_versions() without return types