Exemplo n.º 1
0
def test_next_player():
    input_sgf = "(;GM[1]FF[4]AB[aa]AW[bb])"
    assert "B" == SGF.parse_sgf(input_sgf).next_player
    input_sgf = "(;GM[1]FF[4]AB[aa]AW[bb]PL[B])"
    assert "B" == SGF.parse_sgf(input_sgf).next_player
    input_sgf = "(;GM[1]FF[4]AB[aa]AW[bb]PL[W])"
    assert "W" == SGF.parse_sgf(input_sgf).next_player
    input_sgf = "(;GM[1]FF[4]AB[aa])"
    assert "W" == SGF.parse_sgf(input_sgf).next_player
    input_sgf = "(;GM[1]FF[4]AB[aa]PL[B])"
    assert "B" == SGF.parse_sgf(input_sgf).next_player
Exemplo n.º 2
0
def test_simple():
    input_sgf = "(;GM[1]FF[4]SZ[19]DT[2020-04-12]AB[dd][dj];B[dp];W[pp];B[pj])"
    root = SGF.parse_sgf(input_sgf)
    assert "4" == root.get_property("FF")
    assert root.get_property("XYZ") is None
    assert "dp" == root.children[0].get_property("B")
    assert input_sgf == root.sgf()
Exemplo n.º 3
0
def test_weird_escape():
    input_sgf = """(;GM[1]FF[4]CA[UTF-8]AP[Sabaki:0.43.3]KM[6.5]SZ[19]DT[2020-04-12]C[how does it escape
[
or \\]
])"""
    root = SGF.parse_sgf(input_sgf)
    assert input_sgf == root.sgf()
Exemplo n.º 4
0
def test_old_server_style_again():
    input_sgf = """(;
SZ[19]TM[600]KM[0.500000]LT[]

;B[fp]BL[500];

)"""
    tree = SGF.parse_sgf(input_sgf)
    assert 2 == len(tree.nodes_in_tree)
Exemplo n.º 5
0
def test_backslash_escape():
    nasty_string = "[]]\\"
    nasty_strings = ["[\\]\\]\\\\", "[", "]", "\\", "\\[", "\\]", "\\\\[", "\\\\]", "]]]\\]]\\]]["]
    assert "[\\]\\]\\\\" == SGFNode._escape_value(nasty_string)
    for x in nasty_strings:
        assert x == SGFNode._unescape_value(SGFNode._escape_value(x))

    c2 = ["]", "\\"]
    node = SGFNode(properties={"C1": nasty_string})
    node.set_property("C2", c2)
    assert "(;C1[[\\]\\]\\\\]C2[\\]][\\\\])" == node.sgf()
    assert {"C1": [nasty_string], "C2": c2} == SGF.parse_sgf(node.sgf()).properties
Exemplo n.º 6
0
def test_dragon_weirdness():  # dragon go server has weird line breaks
    input_sgf = "\n(\n\n;\nGM[1]\nFF[4]\nCA[UTF-8]AP[Sabaki:0.43.3]KM[6.5]SZ[19]DT[2020-04-12]AB[dd]\n[dj]\n(\n;\nB[dp]\n;\nW[pp]\n(\n;\nB[pj]\n)\n(\n;\nPL[B]\nAW[jp]\nC[sdfdsfdsf]\n)\n)\n(\n;\nB[pd]\n)\n)\n"
    root = SGF.parse_sgf(input_sgf)
    assert input_sgf.replace("\n", "") == root.sgf()
Exemplo n.º 7
0
def test_branch():
    input_sgf = "(;GM[1]FF[4]CA[UTF-8]AP[Sabaki:0.43.3]KM[6.5]SZ[19]DT[2020-04-12]AB[dd][dj](;B[dp];W[pp](;B[pj])(;PL[B]AW[jp]C[sdfdsfdsf]))(;B[pd]))"
    root = SGF.parse_sgf(input_sgf)
    assert input_sgf == root.sgf()
Exemplo n.º 8
0
def test_old_server_style():
    input_sgf = "... 01:23:45 +0900 (JST) ... (;SZ[19];B[aa];W[ba];)"
    SGF.parse_sgf(input_sgf)
Exemplo n.º 9
0
def test_placements():
    input_sgf = "(;GM[1]FF[4]SZ[19]DT[2020-04-12]AB[dd][aa:ee]AW[ff:zz]AE[aa][bb][cc:dd])"
    root = SGF.parse_sgf(input_sgf)
    print(root.properties)
    assert 6 == len(root.clear_placements)
    assert 25 + 14 * 14 == len(root.placements)
Exemplo n.º 10
0
def test_next_player():
    input_sgf = "(;GM[1]FF[4]AB[aa]AW[bb])"
    assert "B" == SGF.parse_sgf(input_sgf).next_player
    assert "B" == SGF.parse_sgf(input_sgf).initial_player
    input_sgf = "(;GM[1]FF[4]AB[aa]AW[bb]PL[B])"
    assert "B" == SGF.parse_sgf(input_sgf).next_player
    assert "B" == SGF.parse_sgf(input_sgf).initial_player
    input_sgf = "(;GM[1]FF[4]AB[aa]AW[bb]PL[W])"
    assert "W" == SGF.parse_sgf(input_sgf).next_player
    assert "W" == SGF.parse_sgf(input_sgf).initial_player
    input_sgf = "(;GM[1]FF[4]AB[aa])"
    assert "W" == SGF.parse_sgf(input_sgf).next_player
    assert "W" == SGF.parse_sgf(input_sgf).initial_player
    input_sgf = "(;GM[1]FF[4]AB[aa]PL[B])"
    assert "B" == SGF.parse_sgf(input_sgf).next_player
    assert "B" == SGF.parse_sgf(input_sgf).initial_player
    input_sgf = "(;GM[1]FF[4]AB[aa];B[dd])"  # branch exists
    assert "B" == SGF.parse_sgf(input_sgf).next_player
    assert "B" == SGF.parse_sgf(input_sgf).initial_player
    input_sgf = "(;GM[1]FF[4]AB[aa];W[dd])"  # branch exists
    assert "W" == SGF.parse_sgf(input_sgf).next_player
    assert "W" == SGF.parse_sgf(input_sgf).initial_player