1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
//===----------------------------------------------------------*- swift -*-===//
//
// This source file is part of the Swift Argument Parser open source project
//
// Copyright (c) 2020 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
//
//===----------------------------------------------------------------------===//
import XCTest
@testable import ArgumentParser
final class StringSnakeCaseTests: XCTestCase {}
extension StringSnakeCaseTests {
func testStringSnakeCase() {
let toSnakeCaseTests = [
("simpleOneTwo", "simple_one_two"),
("myURL", "my_url"),
("singleCharacterAtEndX", "single_character_at_end_x"),
("thisIsAnXMLProperty", "this_is_an_xml_property"),
("single", "single"), // no underscore
("", ""), // don't die on empty string
("a", "a"), // single character
("aA", "a_a"), // two characters
("version4Thing", "version4_thing"), // numerics
("partCAPS", "part_caps"), // only insert underscore before first all caps
("partCAPSLowerAGAIN", "part_caps_lower_again"), // switch back and forth caps.
("manyWordsInThisThing", "many_words_in_this_thing"), // simple lowercase + underscore + more
("asdfĆqer", "asdf_ćqer"),
("already_snake_case", "already_snake_case"),
("dataPoint22", "data_point22"),
("dataPoint22Word", "data_point22_word"),
("_oneTwoThree", "_one_two_three"),
("oneTwoThree_", "one_two_three_"),
("__oneTwoThree", "__one_two_three"),
("oneTwoThree__", "one_two_three__"),
("_oneTwoThree_", "_one_two_three_"),
("__oneTwoThree", "__one_two_three"),
("__oneTwoThree__", "__one_two_three__"),
("_test", "_test"),
("_test_", "_test_"),
("__test", "__test"),
("test__", "test__"),
("m͉̟̹y̦̳G͍͚͎̳r̤͉̤͕ͅea̲͕t͇̥̼͖U͇̝̠R͙̻̥͓̣L̥̖͎͓̪̫ͅR̩͖̩eq͈͓u̞e̱s̙t̤̺ͅ", "m͉̟̹y̦̳_g͍͚͎̳r̤͉̤͕ͅea̲͕t͇̥̼͖_u͇̝̠r͙̻̥͓̣l̥̖͎͓̪̫ͅ_r̩͖̩eq͈͓u̞e̱s̙t̤̺ͅ"), // because Itai wanted to test this
("🐧🐟", "🐧🐟"), // fishy emoji example?
("URLSession", "url_session"),
("RADAR", "radar"),
("Sample", "sample"),
("_Sample", "_sample"),
("_IAmAnAPPDeveloper", "_i_am_an_app_developer")
]
for test in toSnakeCaseTests {
XCTAssertEqual(test.0.convertedToSnakeCase(), test.1)
}
}
func testStringSnakeCaseWithSeparator() {
let toSnakeCaseTests = [
("simpleOneTwo", "simple-one-two"),
("myURL", "my-url"),
("singleCharacterAtEndX", "single-character-at-end-x"),
("thisIsAnXMLProperty", "this-is-an-xml-property"),
("single", "single"), // no underscore
("", ""), // don't die on empty string
("a", "a"), // single character
("aA", "a-a"), // two characters
("version4Thing", "version4-thing"), // numerics
("partCAPS", "part-caps"), // only insert underscore before first all caps
("partCAPSLowerAGAIN", "part-caps-lower-again"), // switch back and forth caps.
("manyWordsInThisThing", "many-words-in-this-thing"), // simple lowercase + underscore + more
("asdfĆqer", "asdf-ćqer"),
("already_snake_case", "already_snake_case"),
("dataPoint22", "data-point22"),
("dataPoint22Word", "data-point22-word"),
("_oneTwoThree", "_one-two-three"),
("oneTwoThree_", "one-two-three_"),
("__oneTwoThree", "__one-two-three"),
("oneTwoThree__", "one-two-three__"),
("_oneTwoThree_", "_one-two-three_"),
("__oneTwoThree", "__one-two-three"),
("__oneTwoThree__", "__one-two-three__"),
("_test", "_test"),
("_test_", "_test_"),
("__test", "__test"),
("test__", "test__"),
("m͉̟̹y̦̳G͍͚͎̳r̤͉̤͕ͅea̲͕t͇̥̼͖U͇̝̠R͙̻̥͓̣L̥̖͎͓̪̫ͅR̩͖̩eq͈͓u̞e̱s̙t̤̺ͅ", "m͉̟̹y̦̳-g͍͚͎̳r̤͉̤͕ͅea̲͕t͇̥̼͖-u͇̝̠r͙̻̥͓̣l̥̖͎͓̪̫ͅ-r̩͖̩eq͈͓u̞e̱s̙t̤̺ͅ"), // because Itai wanted to test this
("🐧🐟", "🐧🐟"), // fishy emoji example?
("URLSession", "url-session"),
("RADAR", "radar"),
("Sample", "sample"),
("_Sample", "_-sample"),
("_IAmAnAPPDeveloper", "_-i-am-an-app-developer")
]
for test in toSnakeCaseTests {
XCTAssertEqual(test.0.convertedToSnakeCase(separator: "-"), test.1)
}
}
}
|