#!/usr/bin/env python3 """Compare registered fluid current vectors and neighbor queries with vanilla.""" import argparse import json import os from pathlib import Path import platform import subprocess import random import struct import math try: from . import lab, test_rust_parity as base except ImportError: import lab import test_rust_parity as base def corpus(states): empty=next(s for s in states if s['id']=='minecraft:empty') water=next(s for s in states if s['id']=='minecraft:water' and s['properties']['falling']=='false') def cell(fluid=empty,blocks=False,ice=False,faces=0):return dict(fluid=fluid,blocks_flow=blocks,ice=ice,faces=faces) def row(root,entries=None,**kw): f=dict(mode='flow',root=root,states=entries or [cell()],default=0,cells={},position=[0,0,0],fail=-1,direction=2);f.update(kw);return f neighbors=[(0,0,-1),(1,0,0),(0,0,1),(-1,0,0)] for root in states: for neighbor in states: for blocks in [False,True]: yield row(root,[cell(neighbor,blocks),cell(empty,False),cell(water,False)],cells={'0 0 -1':1,'0 -1 -1':2}) for root in states: for index,p in enumerate(neighbors): for y in [0,1]: for mask in range(64): for ice in [False,True]: key=f'{p[0]} {y} {p[2]}' yield row(root,[cell(),cell(empty,False,ice,mask)],cells={key:1}) for root in states[1:]: for neighbor in [empty,water,states[-1]]: for direction in range(6): for ice in [False,True]: for mask in [0,63,1<