From 93812a7707f6e916524464ed4583656157ae5257 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Thu, 2 Mar 2023 21:08:33 +0800 Subject: [PATCH] LMAssembly // Add a test case for LMCoreEX. --- .../LMCoreEXTests.swift | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 Packages/vChewing_LangModelAssembly/Tests/LangModelAssemblyTests/LMCoreEXTests.swift diff --git a/Packages/vChewing_LangModelAssembly/Tests/LangModelAssemblyTests/LMCoreEXTests.swift b/Packages/vChewing_LangModelAssembly/Tests/LangModelAssemblyTests/LMCoreEXTests.swift new file mode 100644 index 00000000..ac2ea00f --- /dev/null +++ b/Packages/vChewing_LangModelAssembly/Tests/LangModelAssemblyTests/LMCoreEXTests.swift @@ -0,0 +1,53 @@ +//// (c) 2021 and onwards The vChewing Project (MIT-NTL License). +// StringView Ranges extension by (c) 2022 and onwards Isaac Xen (MIT License). +// ==================== +// This code is released under the MIT license (SPDX-License-Identifier: MIT) +// ... with NTL restriction stating that: +// No trademark license is granted to use the trade names, trademarks, service +// marks, or product names of Contributor, except as required to fulfill notice +// requirements defined in MIT License. + +import Foundation +import XCTest + +@testable import LangModelAssembly + +private let sampleData: String = #""" +# +# 下述詞頻資料取自 libTaBE 資料庫 (http://sourceforge.net/projects/libtabe/) +# (2002 最終版). 該專案於 1999 年由 Pai-Hsiang Hsiao 發起、以 BSD 授權發行。 +# +ㄍㄠ 篙 -13.624335 +ㄍㄠ 糕 -12.390804 +ㄍㄠ 膏 -11.928720 +ㄍㄠ 高 -7.171551 +ㄎㄜ 刻 -10.450457 +ㄎㄜ 柯 -99.000000 +ㄎㄜ 棵 -11.504072 +ㄎㄜ 科 -7.171052 +ㄎㄜ 顆 -10.574273 +ㄙ 司 -99.000000 +ㄙ 嘶 -13.513987 +ㄙ 思 -9.006414 +ㄙ 撕 -12.259095 +ㄙ 斯 -8.091803 +ㄙ 絲 -9.495858 +ㄙ 私 -99.000000 + +"""# + +final class LMCoreEXTests: XCTestCase { + func testLMCoreEXAsFactoryCoreDict() throws { + var lmTest = vChewingLM.LMCoreEX( + reverse: false, consolidate: false, defaultScore: 0, forceDefaultScore: false + ) + lmTest.replaceData(textData: sampleData) + XCTAssertEqual(lmTest.count, 3) + let gao1 = lmTest.unigramsFor(key: "ㄍㄠ").map(\.value) + let ke1 = lmTest.unigramsFor(key: "ㄎㄜ").map(\.value) + let si1 = lmTest.unigramsFor(key: "ㄙ").map(\.value) + XCTAssertEqual(gao1, ["篙", "糕", "膏", "高"]) + XCTAssertEqual(ke1, ["刻", "柯", "棵", "科", "顆"]) + XCTAssertEqual(si1, ["司", "嘶", "思", "撕", "斯", "絲", "私"]) + } +}