diff options
| author | Schuyler Eldridge | 2018-09-27 13:49:37 -0400 |
|---|---|---|
| committer | GitHub | 2018-09-27 13:49:37 -0400 |
| commit | 953deb5d6f3a7a039d767b7e57a161960b17534a (patch) | |
| tree | f37d64f4b840dac2cab1c781a623ba6a646a6822 /src/test | |
| parent | 2ab5f866044d0d77756906b374813dd2425c5dfa (diff) | |
Add Utils.expandPrefixes as Prefix Unique helper (#900)
This adds a utility, expandPrefixes, that expands a string into all
possible prefixes based on a delimiter. Any repeated occurrence of the
delimiter is viewed as a contributing to a prefix. E.g., "foo_bar" expands
to Seq("foo_", "foo_bar"). This is useful for inlining and keyword
mangling on LowForm. You would like to be able to generate a new name that
is prefix unique with respect to a namespace.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/scala/firrtlTests/UtilsSpec.scala | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/test/scala/firrtlTests/UtilsSpec.scala b/src/test/scala/firrtlTests/UtilsSpec.scala new file mode 100644 index 00000000..a1a72634 --- /dev/null +++ b/src/test/scala/firrtlTests/UtilsSpec.scala @@ -0,0 +1,26 @@ +package firrtlTests + +import org.scalatest.FlatSpec +import org.scalatest.Matchers._ + +import firrtl.Utils + +class UtilsSpec extends FlatSpec { + + behavior of "Utils.expandPrefix" + + val expandPrefixTests = List( + ("return a name without prefixes", "_", "foo", Set("foo")), + ("expand a name ending with prefixes", "_", "foo__", Set("foo__")), + ("expand a name with on prefix", "_", "foo_bar", Set("foo_bar", "foo_")), + ("expand a name with complex prefixes", "_", + "foo__$ba9_9X__$$$$$_", Set("foo__$ba9_9X__$$$$$_", "foo__$ba9_9X__", "foo__$ba9_", "foo__")), + ("expand a name starting with a delimiter", "_", "__foo_bar", Set("__", "__foo_", "__foo_bar")), + ("expand a name with a $ delimiter", "$", "foo$bar$$$baz", Set("foo$", "foo$bar$$$", "foo$bar$$$baz")), + ("expand a name with a multi-character delimiter", "FOO", "fooFOOFOOFOObar", Set("fooFOOFOOFOO", "fooFOOFOOFOObar")) + ) + + for ((description, delimiter, in, out) <- expandPrefixTests) { + it should description in { Utils.expandPrefixes(in, delimiter).toSet should be (out)} + } +} |
