--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ ~ Copyright (c) 2018. Developed by Hedgecode.
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.hedgecode.chess</groupId>
+ <artifactId>chesshog</artifactId>
+ <version>0.1-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>chesshog-uci</artifactId>
+ <version>0.1-SNAPSHOT</version>
+ <packaging>jar</packaging>
+
+ <name>Hedgecode ChessHog UCI</name>
+ <description>
+ Hedgecode ChessHog UCI Module.
+ </description>
+
+ <properties>
+ <chessHogVersion>0.1-SNAPSHOT</chessHogVersion>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.hedgecode.chess</groupId>
+ <artifactId>chesshog</artifactId>
+ <version>${chessHogVersion}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.hedgecode.chess</groupId>
+ <artifactId>chesshog-core</artifactId>
+ <version>${chessHogVersion}</version>
+ </dependency>
+ </dependencies>
+
+</project>
\ No newline at end of file
/*
- * Copyright (c) 2018. Developed by Hedgecode.
+ * Copyright (c) 2018-2019. Developed by Hedgecode.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
private UCIConstants() {
throw new AssertionError(
- "No org.hedgecode.chess.uci.UCIConstants instances!"
+ "No UCIConstants instances!"
);
}
--- /dev/null
+/*
+ * Copyright (c) 2018. Developed by Hedgecode.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.hedgecode.chess.uci.command;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Container class for values of UCI command "info".
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+public final class InfoParams {
+
+
+ private static final Pattern INFO_PATTERN =
+ Pattern.compile(
+ String.format("^\\s*%s(.*)%s\\s+(%s)(.*)$" /*, ... */ )
+ );
+
+ private InfoParams() {
+
+ }
+
+/*
+
+ depth|seldepth|time|nodes|pv|multipv|score...|currmove|currmovenumber|hashfull|nps
+ tbhits|sbhits|cpuload|string|refutation|currline
+
+*/
+
+
+ public static final class Factory {
+
+ public static InfoParams parse(String option) {
+ Matcher matcher = INFO_PATTERN.matcher(option);
+ if (matcher.find()) {
+/*
+ return new InfoParams(
+ matcher.group(1).trim(),
+ matcher.group(2).trim(),
+ matcher.group(3).trim()
+ );
+*/
+ }
+ return null;
+ }
+
+ }
+
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2018-2019. Developed by Hedgecode.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.hedgecode.chess.uci.command;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import org.hedgecode.chess.uci.Acceptor;
+import org.hedgecode.chess.uci.Engine;
+
+/**
+ * Tests for {@link AbstractCommand}.
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+@RunWith(JUnit4.class)
+public class AbstractCommandTest extends Assert {
+
+ @Test
+ public void testParseMove() throws Exception {
+
+ String[] correctMoves = {"e2e4", "e7e5", "e1g1", "e7e8q", "0000"};
+ for (String correctMove : correctMoves) {
+ Move move = new AbstractCommand() {
+ @Override
+ public void exec(Engine engine, Acceptor acceptor, String params) {
+ throw new RuntimeException("Don't supported in test class!");
+ }
+ }.parseMove(correctMove);
+
+ assertNotNull(move);
+ }
+
+ String[] incorrectMoves = {"00e2", "e0e5", "e1j1", "a1a9", "e7e8k"};
+ for (String incorrectMove : incorrectMoves) {
+ Move move = new AbstractCommand() {
+ @Override
+ public void exec(Engine engine, Acceptor acceptor, String params) {
+ throw new RuntimeException("Don't supported in test class!");
+ }
+ }.parseMove(incorrectMove);
+
+ assertNull(move);
+ }
+ }
+
+}
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) 2018. Developed by Hedgecode.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.hedgecode.chess.uci.command;
-
-/**
- * Container class for values of UCI command "info".
- *
- * @author Dmitry Samoshin aka gotty
- */
-public final class InfoParams {
-
-
-}