Compare commits
No commits in common. "c8" and "c8s" have entirely different histories.
4
.gitignore
vendored
4
.gitignore
vendored
@ -1 +1,3 @@
|
|||||||
SOURCES/libkkc-data-0.2.7.tar.xz
|
/tests/artifacts
|
||||||
|
/tests/libkkc-0.3.5.tar.gz.orig
|
||||||
|
/libkkc-data-0.2.7.tar.xz
|
||||||
|
@ -1 +0,0 @@
|
|||||||
6e5d833744f8311908f12168dcf697633efc2795 SOURCES/libkkc-data-0.2.7.tar.xz
|
|
7
gating.yaml
Normal file
7
gating.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
--- !Policy
|
||||||
|
product_versions:
|
||||||
|
- rhel-8
|
||||||
|
decision_context: osci_compose_gate
|
||||||
|
rules:
|
||||||
|
# this is the testcase identifier, which OSCI pipeline uses
|
||||||
|
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}
|
1
sources
Normal file
1
sources
Normal file
@ -0,0 +1 @@
|
|||||||
|
SHA512 (libkkc-data-0.2.7.tar.xz) = 61c0cd8c0fa41ed8df49cac6709eebb245cc965d7e192b1ba945e95f2fc46aca8aa48c16e1977a12c157c55dab6b9f4c30f4905806725eca6e697b762eb7cbd7
|
76
tests/Makefile
Normal file
76
tests/Makefile
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
LIBKKC_VERSION = 0.3.5
|
||||||
|
TOP_LIBKKC_BUILD_DIR = .
|
||||||
|
TOP_LIBKKC_SRC_DIR = .
|
||||||
|
#DEBUG_LIBS = -L$(TOP_LIBKKC_BUILD_DIR)/libkkc-$(LIBKKC_VERSION)/libkkc/.libs
|
||||||
|
|
||||||
|
COMMON_CFLAGS = \
|
||||||
|
-DHAVE_CONFIG_H -I. -pipe -Wall -Werror=format-security \
|
||||||
|
-Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong \
|
||||||
|
-grecord-gcc-switches -m64 -mtune=generic -fasynchronous-unwind-tables \
|
||||||
|
-fstack-clash-protection -fcf-protection -fPIC \
|
||||||
|
-g -O2 \
|
||||||
|
$(NULL)
|
||||||
|
PKG_CONFIG_CFLAGS = \
|
||||||
|
$(shell pkg-config --cflags marisa gee-0.8 json-glib-1.0 glib-2.0) \
|
||||||
|
-I$(TOP_LIBKKC_SRC_DIR)/libkkc-$(LIBKKC_VERSION) \
|
||||||
|
$(NULL)
|
||||||
|
CFLAGS = $(COMMON_CFLAGS) $(PKG_CONFIG_CFLAGS)
|
||||||
|
|
||||||
|
COMMON_LIBS = \
|
||||||
|
-pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 \
|
||||||
|
-Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong \
|
||||||
|
-grecord-gcc-switches -m64 -mtune=generic -fasynchronous-unwind-tables \
|
||||||
|
-fstack-clash-protection -fcf-protection -g -O0 \
|
||||||
|
-Wl,-z -Wl,relro -Wl,-z -Wl,now \
|
||||||
|
$(NULL)
|
||||||
|
PKG_CONFIG_LIBS = \
|
||||||
|
$(shell pkg-config --libs marisa gee-0.8 json-glib-1.0 glib-2.0) \
|
||||||
|
$(DEBUG_LIBS) -lkkc
|
||||||
|
$(NULL)
|
||||||
|
LDFLAGS = $(COMMON_LIBS) $(PKG_CONFIG_LIBS)
|
||||||
|
|
||||||
|
|
||||||
|
all: context
|
||||||
|
|
||||||
|
context.c: context.vala
|
||||||
|
valac --disable-warnings --vapidir=. \
|
||||||
|
--vapidir=$(TOP_LIBKKC_SRC_DIR)/libkkc-$(LIBKKC_VERSION)/libkkc \
|
||||||
|
--pkg gobject-2.0 --pkg gio-2.0 --pkg gee-0.8 --pkg json-glib-1.0 \
|
||||||
|
--pkg kkc-internals-1.0 -g --target-glib=2.24 \
|
||||||
|
-C context.vala test-case.vala \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
context.o: context.c
|
||||||
|
gcc $(COMMON_CFLAGS) $(CFLAGS) -g -O0 -c -o context.o context.c
|
||||||
|
gcc $(COMMON_CFLAGS) $(CFLAGS) -g -O0 -c -o test-case.o test-case.c
|
||||||
|
|
||||||
|
context: context.o
|
||||||
|
gcc $(LDFLAGS) -o context context.o test-case.o
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm *.o *.c context
|
||||||
|
|
||||||
|
run-debug:
|
||||||
|
env LD_LIBRARY_PATH=$(TOP_LIBKKC_BUILD_DIR)/libkkc-$(LIBKKC_VERSION)/libkkc/.libs gdb ./context
|
||||||
|
|
||||||
|
run:
|
||||||
|
./context
|
||||||
|
|
||||||
|
data/models/sorted3/data.3gram.filter:
|
||||||
|
mkdir -p data/models/sorted3
|
||||||
|
cp $(TOP_LIBKKC_SRC_DIR)/libkkc-$(LIBKKC_VERSION)/data/templates/libkkc-data/data/models/sorted3/metadata.json \
|
||||||
|
data/models/sorted3/.
|
||||||
|
cp $(TOP_LIBKKC_SRC_DIR)/libkkc-$(LIBKKC_VERSION)/tests/data/models/text3/data.arpa \
|
||||||
|
data/models/sorted3/.
|
||||||
|
python3 $(TOP_LIBKKC_SRC_DIR)/libkkc-$(LIBKKC_VERSION)/data/templates/libkkc-data/tools/sortlm.py \
|
||||||
|
data/models/sorted3/data.arpa \
|
||||||
|
data/models/sorted3/data
|
||||||
|
python3 $(TOP_LIBKKC_SRC_DIR)/libkkc-$(LIBKKC_VERSION)/data/templates/libkkc-data/tools/genfilter.py \
|
||||||
|
data/models/sorted3/data.2gram \
|
||||||
|
data/models/sorted3/data.2gram.filter \
|
||||||
|
12
|
||||||
|
python3 $(TOP_LIBKKC_SRC_DIR)/libkkc-$(LIBKKC_VERSION)/data/templates/libkkc-data/tools/genfilter.py \
|
||||||
|
data/models/sorted3/data.3gram \
|
||||||
|
data/models/sorted3/data.3gram.filter \
|
||||||
|
10
|
||||||
|
|
84
tests/context.vala
Normal file
84
tests/context.vala
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
class ContextTests : Kkc.TestCase {
|
||||||
|
struct Conversion {
|
||||||
|
string sequence;
|
||||||
|
string result;
|
||||||
|
}
|
||||||
|
const Conversion eras[] = {
|
||||||
|
{ "s h o u w a", "昭和" },
|
||||||
|
{ "h e i s e i", "平成" },
|
||||||
|
{ "r e i w a", "令和" },
|
||||||
|
};
|
||||||
|
Kkc.Context context;
|
||||||
|
|
||||||
|
public ContextTests() {
|
||||||
|
base("Context");
|
||||||
|
add_test("era candidate", this.test_eras_candidate);
|
||||||
|
add_test("era commit", this.test_eras_commit);
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_eras_candidate() {
|
||||||
|
foreach (var era in eras)
|
||||||
|
test_era_candidate(era);
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_eras_commit() {
|
||||||
|
foreach (var era in eras)
|
||||||
|
test_era_commit(era);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void test_era_candidate(Conversion era) {
|
||||||
|
context.process_key_events(era.sequence + " SPC SPC");
|
||||||
|
assert(context.candidates.get(0).output == era.result);
|
||||||
|
context.process_key_events("SPC");
|
||||||
|
assert (context.candidates.get(0).output == era.result);
|
||||||
|
context.reset ();
|
||||||
|
context.clear_output ();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void test_era_commit(Conversion era) {
|
||||||
|
context.process_key_events(era.sequence + " SPC RET");
|
||||||
|
assert(context.has_output());
|
||||||
|
assert(context.peek_output() == era.result);
|
||||||
|
assert(context.has_output());
|
||||||
|
context.reset();
|
||||||
|
context.clear_output();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void set_up() {
|
||||||
|
try {
|
||||||
|
// Loading /usr/lib64/libkkc/models/sorted3/metadata.json
|
||||||
|
var model = Kkc.LanguageModel.load("sorted3");
|
||||||
|
context = new Kkc.Context(model);
|
||||||
|
} catch(Kkc.LanguageModelError e) {
|
||||||
|
stderr.printf("%s\n", e.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
try {
|
||||||
|
var srcdir = Environment.get_variable("srcdir");
|
||||||
|
assert(srcdir != null);
|
||||||
|
var dictionary = new Kkc.SystemSegmentDictionary(
|
||||||
|
Path.build_filename(srcdir, "system-segment-dictionary"));
|
||||||
|
context.dictionaries.add(dictionary);
|
||||||
|
} catch(Error e) {
|
||||||
|
stderr.printf("%s\n", e.message);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
context.dictionaries.add(new Kkc.EmptySegmentDictionary());
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void tear_down() {
|
||||||
|
context = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(string[] args) {
|
||||||
|
Intl.setlocale(LocaleCategory.ALL, "");
|
||||||
|
Test.init(ref args);
|
||||||
|
Kkc.init();
|
||||||
|
TestSuite root = TestSuite.get_root();
|
||||||
|
root.add_suite(new ContextTests().get_suite());
|
||||||
|
Test.run();
|
||||||
|
return 0;
|
||||||
|
}
|
25
tests/prepare-source.sh
Executable file
25
tests/prepare-source.sh
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
LIBKKC_VERSION=0.3.5
|
||||||
|
|
||||||
|
if [ ! -d libkkc-$LIBKKC_VERSION ] ; then
|
||||||
|
wget https://github.com/ueno/libkkc/releases/download/v$LIBKKC_VERSION/libkkc-${LIBKKC_VERSION}.tar.gz
|
||||||
|
zcat libkkc-${LIBKKC_VERSION}.tar.gz | tar xfv -
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f context.c ] ; then
|
||||||
|
rm *.c
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f context.o ] ; then
|
||||||
|
rm *.o
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f context ] ; then
|
||||||
|
rm context
|
||||||
|
fi
|
||||||
|
|
||||||
|
pwd
|
||||||
|
ls
|
||||||
|
echo test
|
||||||
|
make
|
118
tests/test-case.vala
Normal file
118
tests/test-case.vala
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
/* testcase.vala
|
||||||
|
*
|
||||||
|
* Copyright (C) 2009 Julien Peeters
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Julien Peeters <contact@julienpeeters.fr>
|
||||||
|
*
|
||||||
|
* Copied from libgee/tests/testcase.vala.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public abstract class Kkc.TestCase : Object
|
||||||
|
{
|
||||||
|
private GLib.TestSuite _suite;
|
||||||
|
private Adaptor[] _adaptors = new Adaptor[0];
|
||||||
|
|
||||||
|
public delegate void TestMethod ();
|
||||||
|
|
||||||
|
public TestCase (string name)
|
||||||
|
{
|
||||||
|
this._suite = new GLib.TestSuite (name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void add_test (string name, TestMethod test)
|
||||||
|
{
|
||||||
|
var adaptor = new Adaptor (name, test, this);
|
||||||
|
this._adaptors += adaptor;
|
||||||
|
|
||||||
|
this._suite.add (new GLib.TestCase (
|
||||||
|
adaptor.name, adaptor.set_up, adaptor.run, adaptor.tear_down));
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void set_up ()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void tear_down ()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public GLib.TestSuite get_suite ()
|
||||||
|
{
|
||||||
|
return this._suite;
|
||||||
|
}
|
||||||
|
|
||||||
|
private class Adaptor
|
||||||
|
{
|
||||||
|
public string name { get; private set; }
|
||||||
|
private unowned TestMethod _test;
|
||||||
|
private TestCase _test_case;
|
||||||
|
|
||||||
|
public Adaptor (string name, TestMethod test, TestCase test_case)
|
||||||
|
{
|
||||||
|
this._name = name;
|
||||||
|
this._test = test;
|
||||||
|
this._test_case = test_case;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void set_up (void* fixture)
|
||||||
|
{
|
||||||
|
GLib.set_printerr_handler (Adaptor._printerr_func_stack_trace);
|
||||||
|
Log.set_default_handler (this._log_func_stack_trace);
|
||||||
|
|
||||||
|
this._test_case.set_up ();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void _printerr_func_stack_trace (string? text)
|
||||||
|
{
|
||||||
|
if (text == null || str_equal (text, ""))
|
||||||
|
return;
|
||||||
|
|
||||||
|
stderr.printf (text);
|
||||||
|
|
||||||
|
/* Print a stack trace since we've hit some major issue */
|
||||||
|
GLib.on_error_stack_trace ("libtool --mode=execute gdb");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void _log_func_stack_trace (string? log_domain,
|
||||||
|
LogLevelFlags log_levels,
|
||||||
|
string message)
|
||||||
|
{
|
||||||
|
Log.default_handler (log_domain, log_levels, message);
|
||||||
|
|
||||||
|
/* Print a stack trace for any message at the warning level or above
|
||||||
|
*/
|
||||||
|
if ((log_levels &
|
||||||
|
(LogLevelFlags.LEVEL_WARNING | LogLevelFlags.LEVEL_ERROR |
|
||||||
|
LogLevelFlags.LEVEL_CRITICAL))
|
||||||
|
!= 0)
|
||||||
|
{
|
||||||
|
GLib.on_error_stack_trace ("libtool --mode=execute gdb");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run (void* fixture)
|
||||||
|
{
|
||||||
|
this._test ();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void tear_down (void* fixture)
|
||||||
|
{
|
||||||
|
this._test_case.tear_down ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
tests/tests.yml
Normal file
31
tests/tests.yml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
- hosts: localhost
|
||||||
|
roles:
|
||||||
|
- role: standard-test-source
|
||||||
|
tags:
|
||||||
|
- always
|
||||||
|
- role: standard-test-basic
|
||||||
|
tags:
|
||||||
|
- classic
|
||||||
|
required_packages:
|
||||||
|
- bash
|
||||||
|
- gcc
|
||||||
|
- gzip
|
||||||
|
- libkkc
|
||||||
|
- libkkc-data
|
||||||
|
- make
|
||||||
|
- tar
|
||||||
|
- vala
|
||||||
|
- wget
|
||||||
|
- glib2-devel
|
||||||
|
- json-glib-devel
|
||||||
|
- libgee-devel
|
||||||
|
- libkkc-devel
|
||||||
|
- marisa-devel
|
||||||
|
tests:
|
||||||
|
- prepare-source:
|
||||||
|
dir: .
|
||||||
|
run: ./prepare-source.sh
|
||||||
|
- smoke1:
|
||||||
|
dir: .
|
||||||
|
run: ./context
|
||||||
|
|
Loading…
Reference in New Issue
Block a user