def test_nodepath_comparison():
    from panda3d.core import NodePath, PandaNode

    path = NodePath("node")

    # Empty NodePath equals itself
    assert NodePath() == NodePath()
    assert not (NodePath() != NodePath())
    assert not (NodePath() > NodePath())
    assert not (NodePath() < NodePath())
    assert NodePath().compare_to(NodePath()) == 0

    # Empty NodePath does not equal non-empty NodePath
    assert NodePath() != path
    assert not (NodePath() == path)
    assert NodePath().compare_to(path) != 0
    assert path != NodePath()
    assert not (path == NodePath())
    assert path.compare_to(NodePath()) != 0

    # Copy of NodePath equals original
    path2 = NodePath(path)
    assert path == path2
    assert path2 == path
    assert not (path != path2)
    assert not (path2 != path)
    assert not (path > path2)
    assert not (path < path2)
    assert path.compare_to(path2) == 0
    assert path2.compare_to(path) == 0

    # NodePath pointing to copy of node is not the same
    path2 = NodePath(path.node().make_copy())
    assert path != path2
    assert path2 != path
    assert not (path == path2)
    assert not (path2 == path)
    assert (path2 > path) or (path > path2)
    assert (path2 < path) or (path < path2)
    assert path.compare_to(path2) != 0
    assert path2.compare_to(path) != 0