mirror of
https://github.com/mii443/AzooKeyKanaKanjiConverter.git
synced 2025-08-22 15:05:26 +00:00
Move to root
This commit is contained in:
57
Tests/SwiftUtilsTests/AppVersionTests.swift
Normal file
57
Tests/SwiftUtilsTests/AppVersionTests.swift
Normal file
@ -0,0 +1,57 @@
|
||||
//
|
||||
// AppVersionTests.swift
|
||||
// azooKeyTests
|
||||
//
|
||||
// Created by ensan on 2022/12/19.
|
||||
// Copyright © 2022 ensan. All rights reserved.
|
||||
//
|
||||
|
||||
@testable import SwiftUtils
|
||||
import XCTest
|
||||
|
||||
final class AppVersionTests: XCTestCase {
|
||||
|
||||
func testInitFromString() throws {
|
||||
do {
|
||||
let version = AppVersion("1.9.3")
|
||||
XCTAssertNotNil(version)
|
||||
XCTAssertEqual(version!.majorVersion, 1)
|
||||
XCTAssertEqual(version!.minorVersion, 9)
|
||||
XCTAssertEqual(version!.patchVersion, 3)
|
||||
}
|
||||
do {
|
||||
let version = AppVersion("1.10")
|
||||
XCTAssertNotNil(version)
|
||||
XCTAssertEqual(version!.majorVersion, 1)
|
||||
XCTAssertEqual(version!.minorVersion, 10)
|
||||
XCTAssertEqual(version!.patchVersion, 0)
|
||||
}
|
||||
do {
|
||||
let version = AppVersion("1")
|
||||
XCTAssertNotNil(version)
|
||||
XCTAssertEqual(version!.majorVersion, 1)
|
||||
XCTAssertEqual(version!.minorVersion, 0)
|
||||
XCTAssertEqual(version!.patchVersion, 0)
|
||||
}
|
||||
do {
|
||||
let version = AppVersion("X")
|
||||
XCTAssertNil(version)
|
||||
}
|
||||
}
|
||||
|
||||
func testComparable() throws {
|
||||
XCTAssertTrue(AppVersion("1.9.1")! < AppVersion("1.10")!)
|
||||
XCTAssertTrue(AppVersion("1.7")! < AppVersion("1.7.1")!)
|
||||
XCTAssertTrue(AppVersion("1.10")! < AppVersion("2.1")!)
|
||||
XCTAssertFalse(AppVersion("1.9.1")! < AppVersion("1.9.1")!)
|
||||
XCTAssertFalse(AppVersion("2.5")! < AppVersion("2.4.9")!)
|
||||
|
||||
XCTAssertTrue(AppVersion("2.5")! > AppVersion("2.4.9")!)
|
||||
XCTAssertTrue(AppVersion("3.1")! > AppVersion("1.4.9")!)
|
||||
XCTAssertFalse(AppVersion("1.9.1")! > AppVersion("1.9.1")!)
|
||||
XCTAssertFalse(AppVersion("1.9.1")! > AppVersion("1.10")!)
|
||||
XCTAssertFalse(AppVersion("1.7")! > AppVersion("1.7.1")!)
|
||||
XCTAssertFalse(AppVersion("1.10")! > AppVersion("2.1")!)
|
||||
}
|
||||
|
||||
}
|
192
Tests/SwiftUtilsTests/CharacterUtilsTests.swift
Normal file
192
Tests/SwiftUtilsTests/CharacterUtilsTests.swift
Normal file
@ -0,0 +1,192 @@
|
||||
//
|
||||
// CharacterUtilsTests.swift
|
||||
// KanaKanjiConverterModuleTests
|
||||
//
|
||||
// Created by ensan on 2022/12/18.
|
||||
// Copyright © 2022 ensan. All rights reserved.
|
||||
//
|
||||
|
||||
@testable import SwiftUtils
|
||||
import XCTest
|
||||
|
||||
final class CharacterUtilsTests: XCTestCase {
|
||||
|
||||
func testIsKogana() throws {
|
||||
XCTAssertTrue(CharacterUtils.isKogana("ぁ"))
|
||||
XCTAssertTrue(CharacterUtils.isKogana("ヵ"))
|
||||
XCTAssertTrue(CharacterUtils.isKogana("ッ"))
|
||||
XCTAssertTrue(CharacterUtils.isKogana("ヮ"))
|
||||
XCTAssertTrue(CharacterUtils.isKogana("ゎ"))
|
||||
|
||||
XCTAssertFalse(CharacterUtils.isKogana("あ"))
|
||||
XCTAssertFalse(CharacterUtils.isKogana("カ"))
|
||||
XCTAssertFalse(CharacterUtils.isKogana("a"))
|
||||
XCTAssertFalse(CharacterUtils.isKogana("!"))
|
||||
}
|
||||
|
||||
func testIsRomanLetter() throws {
|
||||
XCTAssertTrue(CharacterUtils.isRomanLetter("a"))
|
||||
XCTAssertTrue(CharacterUtils.isRomanLetter("A"))
|
||||
XCTAssertTrue(CharacterUtils.isRomanLetter("b"))
|
||||
|
||||
XCTAssertFalse(CharacterUtils.isRomanLetter("ぁ"))
|
||||
XCTAssertFalse(CharacterUtils.isRomanLetter("'"))
|
||||
XCTAssertFalse(CharacterUtils.isRomanLetter("あ"))
|
||||
XCTAssertFalse(CharacterUtils.isRomanLetter("カ"))
|
||||
XCTAssertFalse(CharacterUtils.isRomanLetter("!"))
|
||||
}
|
||||
|
||||
func testIsDakuten() throws {
|
||||
XCTAssertTrue(CharacterUtils.isDakuten("が"))
|
||||
XCTAssertTrue(CharacterUtils.isDakuten("ば"))
|
||||
XCTAssertTrue(CharacterUtils.isDakuten("ダ"))
|
||||
XCTAssertTrue(CharacterUtils.isDakuten("ヴ"))
|
||||
XCTAssertTrue(CharacterUtils.isDakuten("ゔ"))
|
||||
|
||||
XCTAssertFalse(CharacterUtils.isDakuten("ぱ"))
|
||||
XCTAssertFalse(CharacterUtils.isDakuten("あ"))
|
||||
XCTAssertFalse(CharacterUtils.isDakuten("a"))
|
||||
XCTAssertFalse(CharacterUtils.isDakuten("!"))
|
||||
XCTAssertFalse(CharacterUtils.isDakuten("ん"))
|
||||
}
|
||||
|
||||
func testIsHandakuten() throws {
|
||||
XCTAssertTrue(CharacterUtils.isHandakuten("ぱ"))
|
||||
XCTAssertTrue(CharacterUtils.isHandakuten("パ"))
|
||||
XCTAssertTrue(CharacterUtils.isHandakuten("プ"))
|
||||
XCTAssertTrue(CharacterUtils.isHandakuten("ぽ"))
|
||||
XCTAssertTrue(CharacterUtils.isHandakuten("ペ"))
|
||||
|
||||
XCTAssertFalse(CharacterUtils.isHandakuten("ば"))
|
||||
XCTAssertFalse(CharacterUtils.isHandakuten("が"))
|
||||
XCTAssertFalse(CharacterUtils.isHandakuten("a"))
|
||||
XCTAssertFalse(CharacterUtils.isHandakuten("!"))
|
||||
XCTAssertFalse(CharacterUtils.isHandakuten("ん"))
|
||||
}
|
||||
|
||||
func testKogaki() throws {
|
||||
XCTAssertEqual(CharacterUtils.kogaki("あ"), "ぁ")
|
||||
XCTAssertEqual(CharacterUtils.kogaki("カ"), "ヵ")
|
||||
XCTAssertEqual(CharacterUtils.kogaki("ワ"), "ヮ")
|
||||
|
||||
// そのままの場合もある
|
||||
XCTAssertEqual(CharacterUtils.kogaki("ん"), "ん")
|
||||
XCTAssertEqual(CharacterUtils.kogaki("漢"), "漢")
|
||||
XCTAssertEqual(CharacterUtils.kogaki("A"), "A")
|
||||
}
|
||||
|
||||
func testOgaki() throws {
|
||||
XCTAssertEqual(CharacterUtils.ogaki("ぁ"), "あ")
|
||||
XCTAssertEqual(CharacterUtils.ogaki("ヵ"), "カ")
|
||||
XCTAssertEqual(CharacterUtils.ogaki("ヮ"), "ワ")
|
||||
|
||||
// そのままの場合もある
|
||||
XCTAssertEqual(CharacterUtils.ogaki("ん"), "ん")
|
||||
XCTAssertEqual(CharacterUtils.ogaki("漢"), "漢")
|
||||
XCTAssertEqual(CharacterUtils.ogaki("A"), "A")
|
||||
}
|
||||
|
||||
func testDakuten() throws {
|
||||
XCTAssertEqual(CharacterUtils.dakuten("か"), "が")
|
||||
XCTAssertEqual(CharacterUtils.dakuten("う"), "ゔ")
|
||||
XCTAssertEqual(CharacterUtils.dakuten("ホ"), "ボ")
|
||||
// 「へ」はひらがな、カタカナの判別が難しいので、厳密にやる
|
||||
XCTAssertEqual(CharacterUtils.dakuten(("へ" as Character).toHiragana()), ("べ" as Character).toHiragana())
|
||||
XCTAssertEqual(CharacterUtils.dakuten(("へ" as Character).toKatakana()), ("べ" as Character).toKatakana())
|
||||
|
||||
// そのままの場合もある
|
||||
XCTAssertEqual(CharacterUtils.dakuten("パ"), "パ")
|
||||
XCTAssertEqual(CharacterUtils.dakuten("漢"), "漢")
|
||||
XCTAssertEqual(CharacterUtils.dakuten("A"), "A")
|
||||
}
|
||||
|
||||
func testMudakuten() throws {
|
||||
XCTAssertEqual(CharacterUtils.mudakuten("が"), "か")
|
||||
XCTAssertEqual(CharacterUtils.mudakuten("ゔ"), "う")
|
||||
XCTAssertEqual(CharacterUtils.mudakuten("ボ"), "ホ")
|
||||
// 「へ」はひらがな、カタカナの判別が難しいので、厳密にやる
|
||||
XCTAssertEqual(CharacterUtils.mudakuten(("べ" as Character).toHiragana()), ("へ" as Character).toHiragana())
|
||||
XCTAssertEqual(CharacterUtils.mudakuten(("べ" as Character).toKatakana()), ("へ" as Character).toKatakana())
|
||||
|
||||
// そのままの場合もある
|
||||
XCTAssertEqual(CharacterUtils.mudakuten("パ"), "パ")
|
||||
XCTAssertEqual(CharacterUtils.mudakuten("漢"), "漢")
|
||||
XCTAssertEqual(CharacterUtils.mudakuten("A"), "A")
|
||||
}
|
||||
|
||||
func testHandakuten() throws {
|
||||
XCTAssertEqual(CharacterUtils.handakuten("は"), "ぱ")
|
||||
XCTAssertEqual(CharacterUtils.handakuten("ホ"), "ポ")
|
||||
// 「へ」はひらがな、カタカナの判別が難しいので、厳密にやる
|
||||
XCTAssertEqual(CharacterUtils.handakuten(("へ" as Character).toHiragana()), ("ぺ" as Character).toHiragana())
|
||||
XCTAssertEqual(CharacterUtils.handakuten(("へ" as Character).toKatakana()), ("ぺ" as Character).toKatakana())
|
||||
|
||||
// そのままの場合もある
|
||||
XCTAssertEqual(CharacterUtils.handakuten("バ"), "バ")
|
||||
XCTAssertEqual(CharacterUtils.handakuten("漢"), "漢")
|
||||
XCTAssertEqual(CharacterUtils.handakuten("A"), "A")
|
||||
}
|
||||
|
||||
func testMuhandakuten() throws {
|
||||
XCTAssertEqual(CharacterUtils.muhandakuten("ぱ"), "は")
|
||||
XCTAssertEqual(CharacterUtils.muhandakuten("ポ"), "ホ")
|
||||
// 「へ」はひらがな、カタカナの判別が難しいので、厳密にやる
|
||||
XCTAssertEqual(CharacterUtils.muhandakuten(("ぺ" as Character).toHiragana()), ("へ" as Character).toHiragana())
|
||||
XCTAssertEqual(CharacterUtils.muhandakuten(("ぺ" as Character).toKatakana()), ("へ" as Character).toKatakana())
|
||||
|
||||
// そのままの場合もある
|
||||
XCTAssertEqual(CharacterUtils.muhandakuten("バ"), "バ")
|
||||
XCTAssertEqual(CharacterUtils.muhandakuten("漢"), "漢")
|
||||
XCTAssertEqual(CharacterUtils.muhandakuten("A"), "A")
|
||||
}
|
||||
|
||||
func testToHiragana() throws {
|
||||
XCTAssertEqual(("ハ" as Character).toHiragana(), "は")
|
||||
XCTAssertEqual(("ヴ" as Character).toHiragana(), "ゔ")
|
||||
XCTAssertEqual(("ン" as Character).toHiragana(), "ん")
|
||||
XCTAssertEqual(("ァ" as Character).toHiragana(), "ぁ")
|
||||
|
||||
// そのままの場合もある
|
||||
XCTAssertEqual(("漢" as Character).toHiragana(), "漢")
|
||||
XCTAssertEqual(("あ" as Character).toHiragana(), "あ")
|
||||
XCTAssertEqual(("A" as Character).toHiragana(), "A")
|
||||
}
|
||||
|
||||
func testToKatakana() throws {
|
||||
XCTAssertEqual(("は" as Character).toKatakana(), "ハ")
|
||||
XCTAssertEqual(("ゔ" as Character).toKatakana(), "ヴ")
|
||||
XCTAssertEqual(("ん" as Character).toKatakana(), "ン")
|
||||
XCTAssertEqual(("ぁ" as Character).toKatakana(), "ァ")
|
||||
|
||||
// そのままの場合もある
|
||||
XCTAssertEqual(("漢" as Character).toKatakana(), "漢")
|
||||
XCTAssertEqual(("ア" as Character).toKatakana(), "ア")
|
||||
XCTAssertEqual(("A" as Character).toKatakana(), "A")
|
||||
XCTAssertEqual(("😇" as Character).toKatakana(), "😇")
|
||||
}
|
||||
|
||||
func testRequestChange() throws {
|
||||
XCTAssertEqual(CharacterUtils.requestChange("あ"), "ぁ")
|
||||
XCTAssertEqual(CharacterUtils.requestChange("ぁ"), "あ")
|
||||
XCTAssertEqual(CharacterUtils.requestChange("か"), "が")
|
||||
XCTAssertEqual(CharacterUtils.requestChange("が"), "か")
|
||||
XCTAssertEqual(CharacterUtils.requestChange("つ"), "っ")
|
||||
XCTAssertEqual(CharacterUtils.requestChange("っ"), "づ")
|
||||
XCTAssertEqual(CharacterUtils.requestChange("づ"), "つ")
|
||||
XCTAssertEqual(CharacterUtils.requestChange("は"), "ば")
|
||||
XCTAssertEqual(CharacterUtils.requestChange("ば"), "ぱ")
|
||||
XCTAssertEqual(CharacterUtils.requestChange("ぱ"), "は")
|
||||
|
||||
XCTAssertEqual(CharacterUtils.requestChange("a"), "A")
|
||||
XCTAssertEqual(CharacterUtils.requestChange("A"), "a")
|
||||
|
||||
XCTAssertEqual(CharacterUtils.requestChange("Π"), "π")
|
||||
XCTAssertEqual(CharacterUtils.requestChange("π"), "Π")
|
||||
|
||||
// そのままの場合もある
|
||||
XCTAssertEqual(CharacterUtils.requestChange("バ"), "バ")
|
||||
XCTAssertEqual(CharacterUtils.requestChange("漢"), "漢")
|
||||
XCTAssertEqual(CharacterUtils.requestChange("。"), "。")
|
||||
}
|
||||
|
||||
}
|
34
Tests/SwiftUtilsTests/StringExtensionTests.swift
Normal file
34
Tests/SwiftUtilsTests/StringExtensionTests.swift
Normal file
@ -0,0 +1,34 @@
|
||||
//
|
||||
// StringExtensionTests.swift
|
||||
// azooKeyTests
|
||||
//
|
||||
// Created by ensan on 2022/12/23.
|
||||
// Copyright © 2022 ensan. All rights reserved.
|
||||
//
|
||||
|
||||
@testable import SwiftUtils
|
||||
import XCTest
|
||||
|
||||
final class StringExtensionTests: XCTestCase {
|
||||
|
||||
func testToKatakana() throws {
|
||||
XCTAssertEqual("かゔぁあーんじょ123+++リスク".toKatakana(), "カヴァアーンジョ123+++リスク")
|
||||
XCTAssertEqual("".toKatakana(), "")
|
||||
XCTAssertEqual("コレハロン".toKatakana(), "コレハロン")
|
||||
}
|
||||
|
||||
func testToHiragana() throws {
|
||||
XCTAssertEqual("カヴァアーンじょ123+++リスク".toHiragana(), "かゔぁあーんじょ123+++りすく")
|
||||
XCTAssertEqual("".toHiragana(), "")
|
||||
XCTAssertEqual("これはろん".toHiragana(), "これはろん")
|
||||
}
|
||||
|
||||
func testIndexFromStart() throws {
|
||||
do {
|
||||
let string = "ア❤️🔥ウ😇オ"
|
||||
XCTAssertEqual(string[string.indexFromStart(3)], "😇")
|
||||
XCTAssertEqual(string[string.indexFromStart(4)], "オ")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
91
Tests/SwiftUtilsTests/StringUtilsTests.swift
Normal file
91
Tests/SwiftUtilsTests/StringUtilsTests.swift
Normal file
@ -0,0 +1,91 @@
|
||||
//
|
||||
// StringUtilsTests.swift
|
||||
// KanaKanjiConverterModuleTests
|
||||
//
|
||||
// Created by ensan on 2022/12/18.
|
||||
// Copyright © 2022 ensan. All rights reserved.
|
||||
//
|
||||
|
||||
@testable import SwiftUtils
|
||||
import XCTest
|
||||
|
||||
final class StringTests: XCTestCase {
|
||||
|
||||
func testIsKana() throws {
|
||||
XCTAssertTrue("あ".isKana)
|
||||
XCTAssertTrue("ぁ".isKana)
|
||||
XCTAssertTrue("ン".isKana)
|
||||
XCTAssertTrue("ァ".isKana)
|
||||
XCTAssertTrue("が".isKana)
|
||||
XCTAssertTrue("ゔ".isKana)
|
||||
|
||||
XCTAssertFalse("k".isKana)
|
||||
XCTAssertFalse("@".isKana)
|
||||
XCTAssertFalse("カ".isKana) // 半角カタカナはカナ扱いしない
|
||||
}
|
||||
|
||||
func testOnlyRomanAlphabetOrNumber() throws {
|
||||
XCTAssertTrue("and13".onlyRomanAlphabetOrNumber)
|
||||
XCTAssertTrue("vmaoNFIU".onlyRomanAlphabetOrNumber)
|
||||
XCTAssertTrue("1332".onlyRomanAlphabetOrNumber)
|
||||
|
||||
// 文字がない場合はfalse
|
||||
XCTAssertFalse("".onlyRomanAlphabetOrNumber)
|
||||
XCTAssertFalse("and 13".onlyRomanAlphabetOrNumber)
|
||||
XCTAssertFalse("can't".onlyRomanAlphabetOrNumber)
|
||||
XCTAssertFalse("Mt.".onlyRomanAlphabetOrNumber)
|
||||
}
|
||||
|
||||
func testOnlyRomanAlphabet() throws {
|
||||
XCTAssertTrue("vmaoNFIU".onlyRomanAlphabet)
|
||||
XCTAssertTrue("NAO".onlyRomanAlphabet)
|
||||
|
||||
// 文字がない場合はfalse
|
||||
XCTAssertFalse("".onlyRomanAlphabet)
|
||||
XCTAssertFalse("and 13".onlyRomanAlphabet)
|
||||
XCTAssertFalse("can't".onlyRomanAlphabet)
|
||||
XCTAssertFalse("Mt.".onlyRomanAlphabet)
|
||||
XCTAssertFalse("and13".onlyRomanAlphabet)
|
||||
XCTAssertFalse("vmaoNFIU83942".onlyRomanAlphabet)
|
||||
}
|
||||
|
||||
func testContainsRomanAlphabet() throws {
|
||||
XCTAssertTrue("vmaoNFIU".containsRomanAlphabet)
|
||||
XCTAssertTrue("変数x".containsRomanAlphabet)
|
||||
XCTAssertTrue("and 13".containsRomanAlphabet)
|
||||
XCTAssertTrue("can't".containsRomanAlphabet)
|
||||
XCTAssertTrue("Mt.".containsRomanAlphabet)
|
||||
XCTAssertTrue("(^v^)".containsRomanAlphabet)
|
||||
|
||||
// 文字がない場合はfalse
|
||||
XCTAssertFalse("".containsRomanAlphabet)
|
||||
XCTAssertFalse("!?!?".containsRomanAlphabet)
|
||||
XCTAssertFalse("(^_^)".containsRomanAlphabet)
|
||||
XCTAssertFalse("問題ア".containsRomanAlphabet)
|
||||
}
|
||||
|
||||
func testIsEnglishSentence() throws {
|
||||
XCTAssertTrue("Is this an English sentence?".isEnglishSentence)
|
||||
XCTAssertTrue("English sentences can include symbols like '!?/\\=-+^`{}()[].".isEnglishSentence)
|
||||
|
||||
// 文字がない場合はfalse
|
||||
XCTAssertFalse("".isEnglishSentence)
|
||||
XCTAssertFalse("The word '変数' is not an English word.".isEnglishSentence)
|
||||
XCTAssertFalse("これは完全に日本語の文章です".isEnglishSentence)
|
||||
}
|
||||
|
||||
func testToKatakana() throws {
|
||||
XCTAssertEqual("あいうえお".toKatakana(), "アイウエオ")
|
||||
XCTAssertEqual("これは日本語の文章です".toKatakana(), "コレハ日本語ノ文章デス")
|
||||
XCTAssertEqual("えモじ😇".toKatakana(), "エモジ😇")
|
||||
}
|
||||
|
||||
func testToHiragana() throws {
|
||||
XCTAssertEqual("アイウエオ".toHiragana(), "あいうえお")
|
||||
XCTAssertEqual("僕はロボットです".toHiragana(), "僕はろぼっとです")
|
||||
XCTAssertEqual("えモじ😇".toHiragana(), "えもじ😇")
|
||||
}
|
||||
|
||||
func testPerformanceExample() throws {
|
||||
}
|
||||
}
|
21
Tests/SwiftUtilsTests/WithMutableValueTests.swift
Normal file
21
Tests/SwiftUtilsTests/WithMutableValueTests.swift
Normal file
@ -0,0 +1,21 @@
|
||||
//
|
||||
// WithMutableValueTests.swift
|
||||
// azooKeyTests
|
||||
//
|
||||
// Created by ensan on 2022/12/22.
|
||||
// Copyright © 2022 ensan. All rights reserved.
|
||||
//
|
||||
|
||||
@testable import SwiftUtils
|
||||
import XCTest
|
||||
|
||||
final class WithMutableValueTests: XCTestCase {
|
||||
func testWithMutableValue() throws {
|
||||
var array = [0, 1, 2, 3]
|
||||
withMutableValue(&array[1]) { value in
|
||||
value = value * value + value / value
|
||||
}
|
||||
XCTAssertEqual(array, [0, 2, 2, 3])
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user