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