├── .flake8 ├── .github └── workflows │ └── test-package.yml ├── .gitignore ├── .gitlab-ci.yml ├── COPYING.LESSER ├── LICENSE ├── README.md ├── changelog.txt ├── docs ├── ags4.md ├── ags4_cli.md ├── check.md ├── index.md ├── joss_paper │ ├── paper.bib │ ├── paper.md │ └── paper.pdf ├── media │ ├── Example_error_log.png │ ├── Schematic_of_AGS4_data_structure.png │ ├── dev_directory_structure.png │ └── pandasgui_screenshot.png └── usage.md ├── mkdocs.yml ├── notebooks ├── East West Rail BGS Pre October 2018 upload (partial).ags └── Plot_locations_and_create_strip_log.ipynb ├── poetry.lock ├── pyproject.toml ├── python_ags4 ├── AGS4.py ├── Standard_dictionary_v4_0_3.ags ├── Standard_dictionary_v4_0_4.ags ├── Standard_dictionary_v4_1.ags ├── Standard_dictionary_v4_1_1.ags ├── __init__.py ├── ags4_cli.py ├── check.py └── data │ ├── __init__.py │ └── test_data.ags └── tests ├── DICT.ags ├── test.xlsx ├── test_ags4.py ├── test_batch.py ├── test_check.py ├── test_cli.py └── test_files ├── 4.1-fyi16-1.ags ├── 4.1-rule1-cp1252.ags ├── 4.1-rule1-latin1.ags ├── 4.1-rule1-utf8.ags ├── 4.1-rule1.check ├── 4.1-rule10-1.ags ├── 4.1-rule10-2.ags ├── 4.1-rule10-3.ags ├── 4.1-rule10-4.ags ├── 4.1-rule10-5.ags ├── 4.1-rule10-6.ags ├── 4.1-rule10-7.ags ├── 4.1-rule10-8.ags ├── 4.1-rule10-9.ags ├── 4.1-rule10.ags ├── 4.1-rule11-1.ags ├── 4.1-rule11-2.ags ├── 4.1-rule11-3.ags ├── 4.1-rule12.ags ├── 4.1-rule13-1.ags ├── 4.1-rule13-2.ags ├── 4.1-rule14-1.ags ├── 4.1-rule14-2.ags ├── 4.1-rule14-3.ags ├── 4.1-rule15-1.ags ├── 4.1-rule15-2.ags ├── 4.1-rule15-3.ags ├── 4.1-rule16-1.ags ├── 4.1-rule16-3.ags ├── 4.1-rule16b-2.ags ├── 4.1-rule16b-3.ags ├── 4.1-rule16b-4.ags ├── 4.1-rule16b-5.ags ├── 4.1-rule17-1.ags ├── 4.1-rule17-2.ags ├── 4.1-rule18-1.ags ├── 4.1-rule18-2.ags ├── 4.1-rule18-OK.ags ├── 4.1-rule19-1.ags ├── 4.1-rule19-2.ags ├── 4.1-rule19.ags ├── 4.1-rule19a-1.ags ├── 4.1-rule19a-2.ags ├── 4.1-rule19b-1.ags ├── 4.1-rule19b-2.ags ├── 4.1-rule2.ags ├── 4.1-rule2.check ├── 4.1-rule20-1.ags ├── 4.1-rule20-2.ags ├── 4.1-rule20-3.ags ├── 4.1-rule20OK.ags ├── 4.1-rule2b1.ags ├── 4.1-rule2b1.check ├── 4.1-rule2b2.ags ├── 4.1-rule2b2.check ├── 4.1-rule2b3.ags ├── 4.1-rule2b3.check ├── 4.1-rule2b4.ags ├── 4.1-rule2b4.check ├── 4.1-rule3.ags ├── 4.1-rule3.check ├── 4.1-rule5-1.ags ├── 4.1-rule5-1.check ├── 4.1-rule5.ags ├── 4.1-rule5.check ├── 4.1-rule6_1.ags ├── 4.1-rule6_2.ags ├── 4.1-rule7-1.ags ├── 4.1-rule7-1.check ├── 4.1-rule8-1.ags ├── 4.1-rule8-2.ags ├── 4.1-rule8-3.ags ├── 4.1-rule8-4.ags ├── 4.1-rule8-5.ags ├── 4.1-rule8-6.ags ├── 4.1-rule8-7.ags ├── 4.1-rule9-1.ags ├── 4.1-rule9-1.check ├── 4.1-rule9-2.ags ├── 4.1-rule9.ags ├── 4.1-rule9.check ├── AGS3.ags ├── DuplicateGroups.ags ├── DuplicateHeaders.ags ├── EmptyFile.ags ├── FILE └── 327-16A │ └── Report.pdf ├── File_with_BOM.ags ├── Invalid_TRAN_AGS.ags ├── LBSGCheck.ags ├── LBSGCheck.check ├── Row_with_missing_field.ags ├── Rule20examples.zip ├── STNDandPREMCheck.ags ├── Standalone_SAMP_IDs.ags ├── UnsortedGroups.ags ├── example1.ags └── example1.check /.flake8: -------------------------------------------------------------------------------- 1 | [flake8] 2 | max-line-length=150 3 | -------------------------------------------------------------------------------- /.github/workflows/test-package.yml: -------------------------------------------------------------------------------- 1 | # This workflow will install Python dependencies, run tests and lint with a variety of Python versions 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions 3 | 4 | name: Test package 5 | 6 | on: 7 | push: 8 | branches: [ master, test_github_actions ] 9 | pull_request: 10 | branches: [ master ] 11 | 12 | jobs: 13 | build: 14 | 15 | strategy: 16 | matrix: 17 | runs-on: [ubuntu-latest, windows-latest, macos-latest] 18 | python-version: ['3.9', '3.10', '3.11', '3.12'] 19 | 20 | runs-on: ${{matrix.runs-on}} 21 | 22 | steps: 23 | - uses: actions/checkout@v2 24 | - name: Set up Python ${{ matrix.python-version }} 25 | uses: actions/setup-python@v2 26 | with: 27 | python-version: ${{ matrix.python-version }} 28 | - name: Install dependencies 29 | run: | 30 | python -m pip install --upgrade pip 31 | python -m pip install pytest toml 32 | python -m pip install . 33 | - name: Update system path 34 | run: | 35 | echo "/home/runner/work/python-ags4/python-ags4" >> $GITHUB_PATH 36 | echo $GITHUB_PATH 37 | echo $PATH 38 | - name: Test with pytest 39 | run: | 40 | echo $GITHUB_PATH 41 | echo $PATH 42 | python -m pytest -v 43 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Files for git to ignore 2 | 3 | 4 | # == this repos specific == 5 | 6 | # ignore test files 7 | tests/test_files/*.errors 8 | tests/test.out 9 | tests/batchlog.txt 10 | tests/test_data.xlsx 11 | 12 | 13 | ## gitlab www site 14 | public/ 15 | 16 | 17 | 18 | ## == editors == 19 | .idea/ 20 | .vscode/ 21 | # visualstudio add here 22 | 23 | 24 | ## == compilers == 25 | .sass-cache/ 26 | 27 | 28 | 29 | 30 | ### Python stuff from template >> 31 | 32 | # Byte-compiled / optimized / DLL files 33 | __pycache__/ 34 | *.py[cod] 35 | *$py.class 36 | 37 | # C extensions 38 | *.so 39 | 40 | # Distribution / packaging 41 | .Python 42 | build/ 43 | develop-eggs/ 44 | dist/ 45 | downloads/ 46 | eggs/ 47 | .eggs/ 48 | lib/ 49 | lib64/ 50 | parts/ 51 | sdist/ 52 | var/ 53 | wheels/ 54 | share/python-wheels/ 55 | *.egg-info/ 56 | .installed.cfg 57 | *.egg 58 | MANIFEST 59 | 60 | # PyInstaller 61 | # Usually these files are written by a python script from a template 62 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 63 | *.manifest 64 | *.spec 65 | 66 | # Installer logs 67 | pip-log.txt 68 | pip-delete-this-directory.txt 69 | 70 | # Unit test / coverage reports 71 | htmlcov/ 72 | .tox/ 73 | .nox/ 74 | .coverage 75 | .coverage.* 76 | .cache 77 | nosetests.xml 78 | coverage.xml 79 | *.cover 80 | *.py,cover 81 | .hypothesis/ 82 | .pytest_cache/ 83 | cover/ 84 | 85 | # Translations 86 | *.mo 87 | *.pot 88 | 89 | # Django stuff: 90 | *.log 91 | local_settings.py 92 | db.sqlite3 93 | db.sqlite3-journal 94 | 95 | # Flask stuff: 96 | instance/ 97 | .webassets-cache 98 | 99 | # Scrapy stuff: 100 | .scrapy 101 | 102 | # Sphinx documentation 103 | docs/_build/ 104 | 105 | # PyBuilder 106 | .pybuilder/ 107 | target/ 108 | 109 | # Jupyter Notebook 110 | .ipynb_checkpoints 111 | 112 | # IPython 113 | profile_default/ 114 | ipython_config.py 115 | 116 | # pyenv 117 | # For a library or package, you might want to ignore these files since the code is 118 | # intended to run in multiple environments; otherwise, check them in: 119 | # .python-version 120 | 121 | # pipenv 122 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 123 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 124 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 125 | # install all needed dependencies. 126 | #Pipfile.lock 127 | 128 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 129 | __pypackages__/ 130 | 131 | # Celery stuff 132 | celerybeat-schedule 133 | celerybeat.pid 134 | 135 | # SageMath parsed files 136 | *.sage.py 137 | 138 | # Environments 139 | .env 140 | .venv 141 | env/ 142 | venv/ 143 | ENV/ 144 | env.bak/ 145 | venv.bak/ 146 | 147 | # Spyder project settings 148 | .spyderproject 149 | .spyproject 150 | 151 | # Rope project settings 152 | .ropeproject 153 | 154 | # mkdocs documentation 155 | /site 156 | 157 | # mypy 158 | .mypy_cache/ 159 | .dmypy.json 160 | dmypy.json 161 | 162 | # Pyre type checker 163 | .pyre/ 164 | 165 | # pytype static type analyzer 166 | .pytype/ 167 | 168 | # Cython debug symbols 169 | cython_debug/ 170 | -------------------------------------------------------------------------------- /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | stages: 2 | - test 3 | - deploy_html_docs 4 | 5 | .test: 6 | image: python:$PYTHON_VERSION 7 | stage: test 8 | parallel: 9 | matrix: 10 | - PYTHON_VERSION: ["3.9", "3.10", "3.11", "3.12"] 11 | script: 12 | - python -m pip install . 13 | - python -m pip install pytest nbval 14 | - python -m pip install toml 15 | - python -m pytest -v --ignore=tests/test_batch.py 16 | - python -m doctest README.md 17 | - python -m pip install striplog 18 | - python -m pytest -v --nbval notebooks/Plot_locations_and_create_strip_log.ipynb 19 | 20 | build-linux: 21 | extends: .test 22 | 23 | # Create docs 24 | image: python:3.8-buster 25 | 26 | before_script: 27 | - pip install mkdocs 28 | - pip install mkdocs-material 29 | - pip install mkdocstrings[python] 30 | pages: 31 | stage: deploy_html_docs 32 | script: 33 | - mkdocs build 34 | - mv site public 35 | artifacts: 36 | paths: 37 | - public 38 | only: 39 | - main 40 | -------------------------------------------------------------------------------- /docs/ags4.md: -------------------------------------------------------------------------------- 1 | ::: python_ags4.AGS4 -------------------------------------------------------------------------------- /docs/ags4_cli.md: -------------------------------------------------------------------------------- 1 | ::: python_ags4.ags4_cli -------------------------------------------------------------------------------- /docs/check.md: -------------------------------------------------------------------------------- 1 | ::: python_ags4.check -------------------------------------------------------------------------------- /docs/joss_paper/paper.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asitha-sena/python-ags4/72f0889af17dbd40e75f7b455ceb2c8f4212520b/docs/joss_paper/paper.pdf -------------------------------------------------------------------------------- /docs/media/Example_error_log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asitha-sena/python-ags4/72f0889af17dbd40e75f7b455ceb2c8f4212520b/docs/media/Example_error_log.png -------------------------------------------------------------------------------- /docs/media/Schematic_of_AGS4_data_structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asitha-sena/python-ags4/72f0889af17dbd40e75f7b455ceb2c8f4212520b/docs/media/Schematic_of_AGS4_data_structure.png -------------------------------------------------------------------------------- /docs/media/dev_directory_structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asitha-sena/python-ags4/72f0889af17dbd40e75f7b455ceb2c8f4212520b/docs/media/dev_directory_structure.png -------------------------------------------------------------------------------- /docs/media/pandasgui_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asitha-sena/python-ags4/72f0889af17dbd40e75f7b455ceb2c8f4212520b/docs/media/pandasgui_screenshot.png -------------------------------------------------------------------------------- /mkdocs.yml: -------------------------------------------------------------------------------- 1 | site_name: Official documentation - AGS4 library 2 | repo_url: https://gitlab.com/ags-data-format-wg/ags-python-library 3 | 4 | theme: 5 | name: "material" 6 | palette: 7 | - media: "(prefers-color-scheme)" 8 | toggle: 9 | icon: material/brightness-auto 10 | name: Switch to light mode 11 | - media: "(prefers-color-scheme: light)" 12 | scheme: default 13 | primary: teal 14 | accent: purple 15 | toggle: 16 | icon: material/weather-sunny 17 | name: Switch to dark mode 18 | - media: "(prefers-color-scheme: dark)" 19 | scheme: slate 20 | primary: black 21 | accent: lime 22 | toggle: 23 | icon: material/weather-night 24 | name: Switch to system preference 25 | features: 26 | - navigation.expand 27 | - content.code.copy 28 | 29 | plugins: 30 | - search: 31 | - mkdocstrings: 32 | handlers: 33 | python: 34 | paths: [] 35 | options: 36 | docstring_style: numpy 37 | members_order: source 38 | filters: ["!^_"] 39 | docstring_section_style: table 40 | 41 | markdown_extensions: 42 | - admonition 43 | - pymdownx.details 44 | - pymdownx.superfences 45 | 46 | nav: 47 | - Home: index.md 48 | - Usage: usage.md 49 | - Code: 50 | - AGS4.py: ags4.md 51 | - check.py: check.md 52 | - ags4_cli.py: ags4_cli.md 53 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "python-AGS4" 3 | version = "1.0.0" 4 | description = "A library to read, write, and check AGS4 files using Pandas DataFrames" 5 | authors = ["Asitha Senanayake "] 6 | license = "LGPL-3.0" 7 | readme = "README.md" 8 | homepage = "https://github.com/asitha-sena/python-AGS4" 9 | repository = "https://gitlab.com/ags-data-format-wg/ags-python-library" 10 | include = ["COPYING.LESSER"] 11 | 12 | [tool.poetry.dependencies] 13 | python = "^3.9" 14 | pandas = "^2.1" 15 | openpyxl = "^3.0" 16 | defusedxml = ">=0.6, <0.8" 17 | click = ">=7.0, <9.0" 18 | rich = ">=9.0, <14.0" 19 | 20 | [tool.poetry.scripts] 21 | ags4_cli = "python_ags4.ags4_cli:main" 22 | 23 | [tool.poetry.group.dev.dependencies] 24 | pytest = "^7.3" 25 | toml = "^0.10" 26 | isort = "^5.13.2" 27 | 28 | [build-system] 29 | requires = ["poetry-core"] 30 | build-backend = "poetry.core.masonry.api" 31 | -------------------------------------------------------------------------------- /python_ags4/Standard_dictionary_v4_0_3.ags: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asitha-sena/python-ags4/72f0889af17dbd40e75f7b455ceb2c8f4212520b/python_ags4/Standard_dictionary_v4_0_3.ags -------------------------------------------------------------------------------- /python_ags4/Standard_dictionary_v4_0_4.ags: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asitha-sena/python-ags4/72f0889af17dbd40e75f7b455ceb2c8f4212520b/python_ags4/Standard_dictionary_v4_0_4.ags -------------------------------------------------------------------------------- /python_ags4/__init__.py: -------------------------------------------------------------------------------- 1 | from importlib.metadata import metadata 2 | 3 | _DISTRIBUTION_METADATA = metadata("python-ags4") 4 | __version__ = _DISTRIBUTION_METADATA["Version"] 5 | -------------------------------------------------------------------------------- /python_ags4/data/__init__.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | from python_ags4 import AGS4 4 | 5 | 6 | DATA_DIR = Path(__file__).parent 7 | 8 | # Individual files 9 | TEST_DATA = DATA_DIR / 'test_data.ags' 10 | 11 | 12 | def load_test_data(*args, **kwargs): 13 | """Load test data. 14 | 15 | Note 16 | ---- 17 | This wraps a call to ``AGS4.AGS4_to_dataframe``. All arguments and keyword arguments are passed directly to that method. 18 | 19 | """ 20 | return AGS4.AGS4_to_dataframe(TEST_DATA, *args, **kwargs) 21 | -------------------------------------------------------------------------------- /python_ags4/data/test_data.ags: -------------------------------------------------------------------------------- 1 | 2 | "GROUP","PROJ" 3 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG" 4 | "UNIT","","","","","","" 5 | "TYPE","ID","X","X","X","X","X" 6 | "DATA","123456","Project_Name ""XYZ"" ","","Project_Locations","Contractor_Name","AS" 7 | 8 | "GROUP","TRAN" 9 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM" 10 | "UNIT","","yyyy-mm-dd","","","","","","","","" 11 | "TYPE","X","DT","X","X","X","X","X","X","X","X" 12 | "DATA","1","2020-01-01","Contractor_NameµA","DRAFT","Example_Test_Results","4.0.4","Client_Name","|","+","" 13 | 14 | "GROUP","TYPE" 15 | "HEADING","TYPE_TYPE","TYPE_DESC" 16 | "UNIT","","" 17 | "TYPE","X","X" 18 | "DATA","ID","Unique Identifier" 19 | "DATA","X","Text" 20 | "DATA","DT","Date Time (ISO 8601:2004)" 21 | "DATA","PA","ABBR pick list" 22 | "DATA","PT","TYPE pick list" 23 | "DATA","PU","UNIT pick list" 24 | "DATA","U","Value with a variable format" 25 | "DATA","0DP","Value with 0 decimals" 26 | "DATA","1DP","Value with 1 decimals" 27 | "DATA","2DP","Value with 2 decimals" 28 | "DATA","3DP","Value with 3 decimals" 29 | "DATA","4DP","Value with 4 decimals" 30 | "DATA","5DP","Value with 5 decimals" 31 | "DATA","1SF","Value with 1 significant figures" 32 | "DATA","2SF","Value with 2 significant figures" 33 | "DATA","3SF","Value with 3 significant figures" 34 | "DATA","2SCI","Scientific notation with 2 decimal places" 35 | "DATA","YN","Yes or No" 36 | "DATA","XN","Text/Numeric" 37 | 38 | "GROUP","UNIT" 39 | "HEADING","UNIT_UNIT","UNIT_DESC" 40 | "UNIT","","" 41 | "TYPE","X","X" 42 | "DATA","yyyy-mm-dd","year-month-day" 43 | "DATA","m","metre" 44 | "DATA","s","Second" 45 | "DATA","m/s","metres per second" 46 | "DATA","mm","millimetre" 47 | "DATA","cm2","square centimetre" 48 | "DATA","adeg","arc degree" 49 | "DATA","mm/s","millimetre per second" 50 | "DATA","%","percentage" 51 | "DATA","mg/kg","milligram per kilogram" 52 | "DATA","MPa","megapascal" 53 | "DATA","Mg/m3","megagrams per cubic metre" 54 | "DATAx","kPa","kiloPascal" 55 | 56 | "GROUP","LOCA" 57 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD" 58 | "UNIT","","","","m","m","","","m","yyyy-mm-dd","","","yyyy-mm-dd" 59 | "TYPE","ID","PA","PA","2DP","2DP","PA","X","2DP","DT","X","X","DT" 60 | "DATA","Location_1","Boring","Draft","100000.01","5000000.20","","","50.11","2019-01-01","Geotechnical Investigation","","2019-01-01" 61 | "DATA","Location_2","Boring","Draft","101000.01","5000000.20","","","50.22","2019-01-07","Geotechnical Investigation","","2019-01-07" 62 | "DATA","Location_3","Boring","Draft","102000.01","5000000.20","","","50.33","2019-01-14","Geotechnical Investigation","","2019-01-14" 63 | "DATA","Location_4","Boring","Draft","103000.01","5000000.20","","","50.44","2019-01-21","Geotechnical Investigation","","2019-01-21" 64 | 65 | "GROUP","LLPL" 66 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI" 67 | "UNIT","","m","","","","","m","%","%","" 68 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF" 69 | "DATA","Location_1","1.00","1a","Bag","","","1.05","55.1","20.3","34.8" 70 | "DATA","Location_1","2.00","2a","Bag","","","2.05","155.1","20.3","134.8" 71 | 72 | "GROUP","TEST" 73 | "HEADING","LOCA_ID","TEST_COL" 74 | "UNIT","","m" 75 | "TYPE","ID","1SF" 76 | "DATA","Location_1","1.01" 77 | "DATA","Location_1","0.0" 78 | -------------------------------------------------------------------------------- /tests/test.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asitha-sena/python-ags4/72f0889af17dbd40e75f7b455ceb2c8f4212520b/tests/test.xlsx -------------------------------------------------------------------------------- /tests/test_batch.py: -------------------------------------------------------------------------------- 1 | 2 | import os 3 | import json 4 | import filecmp 5 | import glob 6 | 7 | from python_ags4 import AGS4 8 | 9 | 10 | def checkandcompare(AGSFilename): 11 | ErrorFilename = AGSFilename.replace(".ags", ".errors") 12 | CheckFilename = AGSFilename.replace(".ags", ".check") 13 | 14 | try: 15 | error_list = AGS4.check_file(AGSFilename, standard_AGS4_dictionary='python_ags4/Standard_dictionary_v4_1.ags') 16 | 17 | # remove Metadata item it is exists as this will change everytime it is checked 18 | if "Metadata" in error_list.keys(): 19 | error_list.pop("Metadata") 20 | 21 | f = open(ErrorFilename, "w") 22 | app_json = json.dumps(error_list) 23 | f.write(app_json) 24 | f.close() 25 | 26 | except AGS4.AGS4Error as err: 27 | f = open(ErrorFilename, "w") 28 | f.write(str(err)) 29 | f.close() 30 | 31 | finally: 32 | if glob.glob(CheckFilename): 33 | if filecmp.cmp(ErrorFilename, CheckFilename, shallow=False): 34 | os.remove(ErrorFilename) # remove the error file as this is no longer required 35 | return 'Passed - ' + AGSFilename 36 | else: 37 | return 'Failed - ' + AGSFilename + ' - errors different from file' 38 | else: 39 | return 'Failed - ' + AGSFilename + ' - no file to check against' 40 | 41 | 42 | # Routine to check all the AGS files within the Test_files directory and compare the results against a known output file 43 | # the check files (.check) can be created as a copy of the .errors file once the error output has been manually checked and validated. 44 | 45 | 46 | AGSDirectory = "tests/test_files/" 47 | 48 | 49 | LogFilename = "tests/batchlog.txt" 50 | f = open(LogFilename, "w") 51 | 52 | # Find all AGS files 53 | files = glob.glob(AGSDirectory + '**/*.ags', recursive=True) 54 | for AGSFilename in files: 55 | # Check the file and compare it 56 | test = checkandcompare(AGSFilename) 57 | # write results to the log file 58 | f.write(test + "\n") 59 | 60 | f.close() 61 | print(LogFilename + " written") 62 | -------------------------------------------------------------------------------- /tests/test_cli.py: -------------------------------------------------------------------------------- 1 | from python_ags4.ags4_cli import check, convert, sort 2 | from click.testing import CliRunner 3 | 4 | 5 | TEST_FILE_WITHOUT_ERRORS = 'tests/test_files/4.1-rule20OK.ags' 6 | TEST_FILE_WITH_ERRORS = 'tests/test_files/4.1-rule20-1.ags' 7 | 8 | 9 | def test_check_file_with_errors(): 10 | runner = CliRunner() 11 | result = runner.invoke(check, [TEST_FILE_WITH_ERRORS]) 12 | 13 | assert result.exit_code == 1 14 | 15 | print(result.stdout) 16 | 17 | 18 | def test_check_file_without_errors(): 19 | runner = CliRunner() 20 | result = runner.invoke(check, [TEST_FILE_WITHOUT_ERRORS]) 21 | 22 | assert result.exit_code == 0 23 | 24 | print(result.stdout) 25 | 26 | 27 | def test_convert_ags_to_xlsx(): 28 | runner = CliRunner() 29 | result = runner.invoke(convert, [TEST_FILE_WITH_ERRORS, 'tests/test_files/output.xlsx']) 30 | 31 | assert result.exit_code == 0 32 | 33 | print(result.stdout) 34 | 35 | 36 | def test_convert_sort(): 37 | runner = CliRunner() 38 | result = runner.invoke(sort, ['tests/test_files/UnsortedGroups.ags', 'tests/test_files/temp.ags']) 39 | 40 | assert result.exit_code == 0 41 | 42 | print(result.stdout) 43 | -------------------------------------------------------------------------------- /tests/test_files/4.1-fyi16-1.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Different Description","","","" 16 | 17 | "GROUP","TRAN" 18 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 19 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 20 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 21 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","Different description for U in the ABBR table","" 22 | 23 | "GROUP","TYPE" 24 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 25 | "UNIT","","","" 26 | "TYPE","X","X","X" 27 | "DATA","U","Undefined","" 28 | "DATA","X","Text","" 29 | "DATA","ID","Unique identifier","" 30 | "DATA","PA","ABBR pick list","" 31 | "DATA","2DP","Value; required number of decimal places, 2","" 32 | "DATA","DT","Date Time (ISO 8601:2004)","" 33 | "DATA","0DP","Value; required number of decimal places, 0","" 34 | "DATA","1DP","Value; required number of decimal places, 1","" 35 | "DATA","PT","TYPE pick list","" 36 | "DATA","PU","UNIT pick list","" 37 | "DATA","DMS","Degrees:Minutes:Seconds","" 38 | "DATA","T","Elapsed time","" 39 | "DATA","RL","Record link","" 40 | "DATA","XN","Text/Numeric","" 41 | "DATA","2SF","Value; required number of significant figures, 2","" 42 | 43 | "GROUP","UNIT" 44 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 45 | "UNIT","","","","" 46 | "TYPE","X","X","X","X" 47 | "DATA","-","No unit","","" 48 | "DATA","m","metre","","" 49 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 50 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 51 | "DATA","mm","millimetre","","" 52 | "DATA","%","percentage","","" 53 | "DATA","l/min","litres per minute","","" 54 | "DATA","hh:mm:ss","hh:mm:ss","","" 55 | 56 | "GROUP","LOCA" 57 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 58 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 59 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 60 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 61 | 62 | "GROUP","SAMP" 63 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 64 | "UNIT","","m","","","","m" 65 | "TYPE","ID","2DP","X","PA","ID","2DP" 66 | "DATA","327-16A","15.00","15","U","","15.45" 67 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 68 | 69 | "GROUP","LLPL" 70 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 71 | "UNIT","","m","","","","","m","%","%","","%" 72 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 73 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 74 | "DATA","327-16A","15.00","15","U","","2","15.00","40","20","20","15" 75 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule1-cp1252.ags: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asitha-sena/python-ags4/72f0889af17dbd40e75f7b455ceb2c8f4212520b/tests/test_files/4.1-rule1-cp1252.ags -------------------------------------------------------------------------------- /tests/test_files/4.1-rule1-latin1.ags: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asitha-sena/python-ags4/72f0889af17dbd40e75f7b455ceb2c8f4212520b/tests/test_files/4.1-rule1-latin1.ags -------------------------------------------------------------------------------- /tests/test_files/4.1-rule1.check: -------------------------------------------------------------------------------- 1 | {"Rule 1": [{"line": 71, "group": "", "desc": "Has Non-ASCII character(s)."}]} -------------------------------------------------------------------------------- /tests/test_files/4.1-rule10-1.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | 17 | "GROUP","TRAN" 18 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 19 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 20 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 21 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","LLPL,Duplicate key field combination: DATA|327-16A|15.00|15|U||1|15.00","" 22 | 23 | "GROUP","TYPE" 24 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 25 | "UNIT","","","" 26 | "TYPE","X","X","X" 27 | "DATA","U","Undefined","" 28 | "DATA","X","Text","" 29 | "DATA","ID","Unique identifier","" 30 | "DATA","PA","ABBR pick list","" 31 | "DATA","2DP","Value; required number of decimal places, 2","" 32 | "DATA","DT","Date Time (ISO 8601:2004)","" 33 | "DATA","0DP","Value; required number of decimal places, 0","" 34 | "DATA","1DP","Value; required number of decimal places, 1","" 35 | "DATA","PT","TYPE pick list","" 36 | "DATA","PU","UNIT pick list","" 37 | "DATA","DMS","Degrees:Minutes:Seconds","" 38 | "DATA","T","Elapsed time","" 39 | "DATA","RL","Record link","" 40 | "DATA","XN","Text/Numeric","" 41 | "DATA","2SF","Value; required number of significant figures, 2","" 42 | 43 | "GROUP","UNIT" 44 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 45 | "UNIT","","","","" 46 | "TYPE","X","X","X","X" 47 | "DATA","-","No unit","","" 48 | "DATA","m","metre","","" 49 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 50 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 51 | "DATA","mm","millimetre","","" 52 | "DATA","%","percentage","","" 53 | "DATA","l/min","litres per minute","","" 54 | "DATA","hh:mm:ss","hh:mm:ss","","" 55 | 56 | "GROUP","LOCA" 57 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 58 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 59 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 60 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 61 | 62 | "GROUP","SAMP" 63 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 64 | "UNIT","","m","","","","m" 65 | "TYPE","ID","2DP","X","PA","ID","2DP" 66 | "DATA","327-16A","15.00","15","U","","15.45" 67 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 68 | 69 | "GROUP","LLPL" 70 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 71 | "UNIT","","m","","","","","m","%","%","","%" 72 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 73 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 74 | "DATA","327-16A","15.00","15","U","","1","15.00","40","20","20","15" 75 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule10-2.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | 17 | "GROUP","TRAN" 18 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 19 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 20 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 21 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","LLPL,Key field SAMP_ID not found","" 22 | 23 | "GROUP","TYPE" 24 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 25 | "UNIT","","","" 26 | "TYPE","X","X","X" 27 | "DATA","U","Undefined","" 28 | "DATA","X","Text","" 29 | "DATA","ID","Unique identifier","" 30 | "DATA","PA","ABBR pick list","" 31 | "DATA","2DP","Value; required number of decimal places, 2","" 32 | "DATA","DT","Date Time (ISO 8601:2004)","" 33 | "DATA","0DP","Value; required number of decimal places, 0","" 34 | "DATA","1DP","Value; required number of decimal places, 1","" 35 | "DATA","PT","TYPE pick list","" 36 | "DATA","PU","UNIT pick list","" 37 | "DATA","DMS","Degrees:Minutes:Seconds","" 38 | "DATA","T","Elapsed time","" 39 | "DATA","RL","Record link","" 40 | "DATA","XN","Text/Numeric","" 41 | "DATA","2SF","Value; required number of significant figures, 2","" 42 | 43 | "GROUP","UNIT" 44 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 45 | "UNIT","","","","" 46 | "TYPE","X","X","X","X" 47 | "DATA","-","No unit","","" 48 | "DATA","m","metre","","" 49 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 50 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 51 | "DATA","mm","millimetre","","" 52 | "DATA","%","percentage","","" 53 | "DATA","l/min","litres per minute","","" 54 | "DATA","hh:mm:ss","hh:mm:ss","","" 55 | 56 | "GROUP","LOCA" 57 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 58 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 59 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 60 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 61 | 62 | "GROUP","SAMP" 63 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 64 | "UNIT","","m","","","","m" 65 | "TYPE","ID","2DP","X","PA","ID","2DP" 66 | "DATA","327-16A","15.00","15","U","","15.45" 67 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 68 | 69 | "GROUP","LLPL" 70 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 71 | "UNIT","","m","","","","m","%","%","","%" 72 | "TYPE","ID","2DP","X","PA","X","2DP","2SF","XN","2SF","2SF" 73 | "DATA","327-16A","15.00","15","U","1","15.00","45","25","20","15" 74 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule10-3.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | 17 | "GROUP","TRAN" 18 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 19 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 20 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 21 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","LLPL,Parent entry for line not found in SAMP:,327-16A|15.00|15||","" 22 | 23 | "GROUP","TYPE" 24 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 25 | "UNIT","","","" 26 | "TYPE","X","X","X" 27 | "DATA","U","Undefined","" 28 | "DATA","X","Text","" 29 | "DATA","ID","Unique identifier","" 30 | "DATA","PA","ABBR pick list","" 31 | "DATA","2DP","Value; required number of decimal places, 2","" 32 | "DATA","DT","Date Time (ISO 8601:2004)","" 33 | "DATA","0DP","Value; required number of decimal places, 0","" 34 | "DATA","1DP","Value; required number of decimal places, 1","" 35 | "DATA","PT","TYPE pick list","" 36 | "DATA","PU","UNIT pick list","" 37 | "DATA","DMS","Degrees:Minutes:Seconds","" 38 | "DATA","T","Elapsed time","" 39 | "DATA","RL","Record link","" 40 | "DATA","XN","Text/Numeric","" 41 | "DATA","2SF","Value; required number of significant figures, 2","" 42 | 43 | "GROUP","UNIT" 44 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 45 | "UNIT","","","","" 46 | "TYPE","X","X","X","X" 47 | "DATA","-","No unit","","" 48 | "DATA","m","metre","","" 49 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 50 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 51 | "DATA","mm","millimetre","","" 52 | "DATA","%","percentage","","" 53 | "DATA","l/min","litres per minute","","" 54 | "DATA","hh:mm:ss","hh:mm:ss","","" 55 | 56 | "GROUP","LOCA" 57 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 58 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 59 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 60 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 61 | 62 | "GROUP","SAMP" 63 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 64 | "UNIT","","m","","","","m" 65 | "TYPE","ID","2DP","X","PA","ID","2DP" 66 | "DATA","327-16A","15.00","15","U","","15.45" 67 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 68 | 69 | "GROUP","LLPL" 70 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 71 | "UNIT","","m","","","","","m","%","%","","%" 72 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 73 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 74 | "DATA","327-16A","15.00","15","","","1","15.00","40","20","20","15" 75 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule10-4.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | 17 | "GROUP","TRAN" 18 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 19 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 20 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 21 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","LLPL,Parent entry for line not found in SAMP: 327-16A|15.00|15|U|","" 22 | 23 | "GROUP","TYPE" 24 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 25 | "UNIT","","","" 26 | "TYPE","X","X","X" 27 | "DATA","U","Undefined","" 28 | "DATA","X","Text","" 29 | "DATA","ID","Unique identifier","" 30 | "DATA","PA","ABBR pick list","" 31 | "DATA","2DP","Value; required number of decimal places, 2","" 32 | "DATA","DT","Date Time (ISO 8601:2004)","" 33 | "DATA","0DP","Value; required number of decimal places, 0","" 34 | "DATA","1DP","Value; required number of decimal places, 1","" 35 | "DATA","PT","TYPE pick list","" 36 | "DATA","PU","UNIT pick list","" 37 | "DATA","DMS","Degrees:Minutes:Seconds","" 38 | "DATA","T","Elapsed time","" 39 | "DATA","RL","Record link","" 40 | "DATA","XN","Text/Numeric","" 41 | "DATA","2SF","Value; required number of significant figures, 2","" 42 | 43 | "GROUP","UNIT" 44 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 45 | "UNIT","","","","" 46 | "TYPE","X","X","X","X" 47 | "DATA","-","No unit","","" 48 | "DATA","m","metre","","" 49 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 50 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 51 | "DATA","mm","millimetre","","" 52 | "DATA","%","percentage","","" 53 | "DATA","l/min","litres per minute","","" 54 | "DATA","hh:mm:ss","hh:mm:ss","","" 55 | 56 | "GROUP","LOCA" 57 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 58 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 59 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 60 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 61 | 62 | "GROUP","SAMP" 63 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 64 | "UNIT","","m","","","","m" 65 | "TYPE","ID","2DP","X","PA","ID","2DP" 66 | "DATA","327-16A","15.00","15","U","ABC121415009","15.45" 67 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 68 | 69 | "GROUP","LLPL" 70 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 71 | "UNIT","","m","","","","","m","%","%","","%" 72 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 73 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 74 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule10-5.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | 17 | "GROUP","TRAN" 18 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 19 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 20 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 21 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","SAMP,Could not find parent group LOCA","" 22 | 23 | "GROUP","TYPE" 24 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 25 | "UNIT","","","" 26 | "TYPE","X","X","X" 27 | "DATA","U","Undefined","" 28 | "DATA","X","Text","" 29 | "DATA","ID","Unique identifier","" 30 | "DATA","PA","ABBR pick list","" 31 | "DATA","2DP","Value; required number of decimal places, 2","" 32 | "DATA","DT","Date Time (ISO 8601:2004)","" 33 | "DATA","0DP","Value; required number of decimal places, 0","" 34 | "DATA","1DP","Value; required number of decimal places, 1","" 35 | "DATA","PT","TYPE pick list","" 36 | "DATA","PU","UNIT pick list","" 37 | "DATA","DMS","Degrees:Minutes:Seconds","" 38 | "DATA","T","Elapsed time","" 39 | "DATA","RL","Record link","" 40 | "DATA","XN","Text/Numeric","" 41 | "DATA","2SF","Value; required number of significant figures, 2","" 42 | 43 | "GROUP","UNIT" 44 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 45 | "UNIT","","","","" 46 | "TYPE","X","X","X","X" 47 | "DATA","-","No unit","","" 48 | "DATA","m","metre","","" 49 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 50 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 51 | "DATA","mm","millimetre","","" 52 | "DATA","%","percentage","","" 53 | "DATA","l/min","litres per minute","","" 54 | "DATA","hh:mm:ss","hh:mm:ss","","" 55 | 56 | "GROUP","SAMP" 57 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 58 | "UNIT","","m","","","","m" 59 | "TYPE","ID","2DP","X","PA","ID","2DP" 60 | "DATA","327-16A","15.00","15","U","","15.45" 61 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 62 | 63 | "GROUP","LLPL" 64 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 65 | "UNIT","","m","","","","","m","%","%","","%" 66 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 67 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 68 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule10-6.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | 8 | "GROUP","TRAN" 9 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 10 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 11 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 12 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","Required field ABBR_DESC missing.","" 13 | 14 | "GROUP","ABBR" 15 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DES","ABBR_LIST","ABBR_REM","FILE_FSET" 16 | "UNIT","","","","","","" 17 | "TYPE","X","X","X","X","X","X" 18 | "DATA","DICT_TYPE","GROUP","Group","","","" 19 | "DATA","DICT_TYPE","HEADING","Heading","","","" 20 | "DATA","DICT_STAT","OTHER","Other Field","","","" 21 | "DATA","DICT_STAT","KEY","Key Field","","","" 22 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 23 | "DATA","SAMP_TYPE","D","Small disturbed sample","","","" 24 | "DATA","ISPT_TYPE","S","Split spoon","","","" 25 | "DATA","LOCA_TYPE","CP","Cable percussion (shell and auger)","","","" 26 | "DATA","LOCA_TYPE","RC","Rotary cored","","","" 27 | 28 | "GROUP","DICT" 29 | "HEADING","DICT_TYPE","DICT_GRP","DICT_HDNG","DICT_STAT","DICT_DTYP","DICT_DESC","DICT_UNIT","DICT_EXMP","DICT_PGRP","DICT_REM","FILE_FSET" 30 | "UNIT","","","","","","","","","","","" 31 | "TYPE","PA","X","X","PA","PT","X","PU","X","X","X","X" 32 | "DATA","HEADING","LOCA","LOCA_CHKG","OTHER","X","The person who checked the data for this Location","","","","","" 33 | "DATA","HEADING","LOCA","LOCA_APPG","OTHER","X","The person who approved the data for this Location","","","","","" 34 | 35 | "GROUP","TYPE" 36 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 37 | "UNIT","","","" 38 | "TYPE","X","X","X" 39 | "DATA","U","Undefined","" 40 | "DATA","X","Text","" 41 | "DATA","ID","Unique identifier","" 42 | "DATA","PA","ABBR pick list","" 43 | "DATA","2DP","Value; required number of decimal places, 2","" 44 | "DATA","DT","Date Time (ISO 8601:2004)","" 45 | "DATA","0DP","Value; required number of decimal places, 0","" 46 | "DATA","1DP","Value; required number of decimal places, 1","" 47 | "DATA","PT","TYPE pick list","" 48 | "DATA","PU","UNIT pick list","" 49 | "DATA","DMS","Degrees:Minutes:Seconds","" 50 | "DATA","T","Elapsed time","" 51 | "DATA","RL","Record link","" 52 | "DATA","XN","Text/Numeric","" 53 | "DATA","2SF","Value; required number of significant figures, 2","" 54 | "DATA","YN","Yes/No","" 55 | 56 | "GROUP","UNIT" 57 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 58 | "UNIT","","","","" 59 | "TYPE","X","X","X","X" 60 | "DATA","-","No unit","","" 61 | "DATA","m","metre","","" 62 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 63 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 64 | "DATA","mm","millimetre","","" 65 | "DATA","%","percentage","","" 66 | "DATA","l/min","litres per minute","","" 67 | "DATA","hh:mm:ss","hh:mm:ss","","" 68 | 69 | "GROUP","LOCA" 70 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET","LOCA_CHKG","LOCA_APPG" 71 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","","","" 72 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X","X","X" 73 | "DATA","327-16A","CP+RC","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","RC","AS" 74 | 75 | "GROUP","SAMP" 76 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 77 | "UNIT","","m","","","","m" 78 | "TYPE","ID","2DP","X","PA","ID","2DP" 79 | "DATA","327-16A","15.00","15","U","","15.45" 80 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 81 | 82 | "GROUP","LLPL" 83 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 84 | "UNIT","","m","","","","","m","%","%","","%" 85 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 86 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 87 | "DATA","327-16A","15.00","15","U","","2","15.00","40","20","20","15" 88 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule10-9.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | 8 | "GROUP","TRAN" 9 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 10 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 11 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 12 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","Required fields ABBR_CODE (Lines 23 & 26), ABBR_DESC (Line 26), and TYPE_DESC (Line 40) left blank.","" 13 | 14 | "GROUP","ABBR" 15 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 16 | "UNIT","","","","","","" 17 | "TYPE","X","X","X","X","X","X" 18 | "DATA","DICT_TYPE","GROUP","Group","","","" 19 | "DATA","DICT_TYPE","HEADING","Heading","","","" 20 | "DATA","DICT_STAT","OTHER","Other Field","","","" 21 | "DATA","DICT_STAT","KEY","Key Field","","","" 22 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 23 | "DATA","SAMP_TYPE","","Small disturbed sample","","","" 24 | "DATA","ISPT_TYPE","S","Split spoon","","","" 25 | "DATA","LOCA_TYPE","CP","Cable percussion (shell and auger)","","","" 26 | "DATA","LOCA_TYPE","","","","","" 27 | 28 | "GROUP","DICT" 29 | "HEADING","DICT_TYPE","DICT_GRP","DICT_HDNG","DICT_STAT","DICT_DTYP","DICT_DESC","DICT_UNIT","DICT_EXMP","DICT_PGRP","DICT_REM","FILE_FSET" 30 | "UNIT","","","","","","","","","","","" 31 | "TYPE","PA","X","X","PA","PT","X","PU","X","X","X","X" 32 | "DATA","HEADING","LOCA","LOCA_CHKG","OTHER","X","The person who checked the data for this Location","","","","","" 33 | "DATA","HEADING","LOCA","LOCA_APPG","OTHER","X","The person who approved the data for this Location","","","","","" 34 | 35 | "GROUP","TYPE" 36 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 37 | "UNIT","","","" 38 | "TYPE","X","X","X" 39 | "DATA","U","Undefined","" 40 | "DATA","X","","" 41 | "DATA","ID","Unique identifier","" 42 | "DATA","PA","ABBR pick list","" 43 | "DATA","2DP","Value; required number of decimal places, 2","" 44 | "DATA","DT","Date Time (ISO 8601:2004)","" 45 | "DATA","0DP","Value; required number of decimal places, 0","" 46 | "DATA","1DP","Value; required number of decimal places, 1","" 47 | "DATA","PT","TYPE pick list","" 48 | "DATA","PU","UNIT pick list","" 49 | "DATA","DMS","Degrees:Minutes:Seconds","" 50 | "DATA","T","Elapsed time","" 51 | "DATA","RL","Record link","" 52 | "DATA","XN","Text/Numeric","" 53 | "DATA","2SF","Value; required number of significant figures, 2","" 54 | "DATA","YN","Yes/No","" 55 | 56 | "GROUP","UNIT" 57 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 58 | "UNIT","","","","" 59 | "TYPE","X","X","X","X" 60 | "DATA","-","No unit","","" 61 | "DATA","m","metre","","" 62 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 63 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 64 | "DATA","mm","millimetre","","" 65 | "DATA","%","percentage","","" 66 | "DATA","l/min","litres per minute","","" 67 | "DATA","hh:mm:ss","hh:mm:ss","","" 68 | 69 | "GROUP","LOCA" 70 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET","LOCA_CHKG","LOCA_APPG" 71 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","","","" 72 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X","X","X" 73 | "DATA","327-16A","CP+RC","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","RC","AS" 74 | 75 | "GROUP","SAMP" 76 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 77 | "UNIT","","m","","","","m" 78 | "TYPE","ID","2DP","X","PA","ID","2DP" 79 | "DATA","327-16A","15.00","15","U","","15.45" 80 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 81 | 82 | "GROUP","LLPL" 83 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 84 | "UNIT","","m","","","","","m","%","%","","%" 85 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 86 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 87 | "DATA","327-16A","15.00","15","U","","2","15.00","40","20","20","15" 88 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule10.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | 17 | "GROUP","TRAN" 18 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 19 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 20 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 21 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","No errors","" 22 | 23 | "GROUP","TYPE" 24 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 25 | "UNIT","","","" 26 | "TYPE","X","X","X" 27 | "DATA","U","Undefined","" 28 | "DATA","X","Text","" 29 | "DATA","ID","Unique identifier","" 30 | "DATA","PA","ABBR pick list","" 31 | "DATA","2DP","Value; required number of decimal places, 2","" 32 | "DATA","DT","Date Time (ISO 8601:2004)","" 33 | "DATA","0DP","Value; required number of decimal places, 0","" 34 | "DATA","1DP","Value; required number of decimal places, 1","" 35 | "DATA","PT","TYPE pick list","" 36 | "DATA","PU","UNIT pick list","" 37 | "DATA","DMS","Degrees:Minutes:Seconds","" 38 | "DATA","T","Elapsed time","" 39 | "DATA","RL","Record link","" 40 | "DATA","XN","Text/Numeric","" 41 | "DATA","2SF","Value; required number of significant figures, 2","" 42 | 43 | "GROUP","UNIT" 44 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 45 | "UNIT","","","","" 46 | "TYPE","X","X","X","X" 47 | "DATA","-","No unit","","" 48 | "DATA","m","metre","","" 49 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 50 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 51 | "DATA","mm","millimetre","","" 52 | "DATA","%","percentage","","" 53 | "DATA","l/min","litres per minute","","" 54 | "DATA","hh:mm:ss","hh:mm:ss","","" 55 | 56 | "GROUP","LOCA" 57 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 58 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 59 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 60 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 61 | 62 | "GROUP","SAMP" 63 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 64 | "UNIT","","m","","","","m" 65 | "TYPE","ID","2DP","X","PA","ID","2DP" 66 | "DATA","327-16A","15.00","15","U","","15.45" 67 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 68 | 69 | "GROUP","LLPL" 70 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 71 | "UNIT","","m","","","","","m","%","%","","%" 72 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 73 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 74 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule11-3.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | "DATA","SAMP_TYPE","D","Small disturbed sample","","","" 17 | "DATA","ISPT_TYPE","S","Split spoon","","","" 18 | 19 | 20 | "GROUP","TRAN" 21 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 22 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 23 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 24 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","Data type,RL,not found in TYPE table","" 25 | 26 | "GROUP","TYPE" 27 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 28 | "UNIT","","","" 29 | "TYPE","X","X","X" 30 | "DATA","U","Undefined","" 31 | "DATA","X","Text","" 32 | "DATA","ID","Unique identifier","" 33 | "DATA","PA","ABBR pick list","" 34 | "DATA","2DP","Value; required number of decimal places, 2","" 35 | "DATA","DT","Date Time (ISO 8601:2004)","" 36 | "DATA","0DP","Value; required number of decimal places, 0","" 37 | "DATA","1DP","Value; required number of decimal places, 1","" 38 | "DATA","PT","TYPE pick list","" 39 | "DATA","PU","UNIT pick list","" 40 | "DATA","DMS","Degrees:Minutes:Seconds","" 41 | "DATA","T","Elapsed time","" 42 | "DATA","XN","Text/Numeric","" 43 | "DATA","2SF","Value; required number of significant figures, 2","" 44 | "DATA","YN","Yes/No","" 45 | 46 | "GROUP","UNIT" 47 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 48 | "UNIT","","","","" 49 | "TYPE","X","X","X","X" 50 | "DATA","-","No unit","","" 51 | "DATA","m","metre","","" 52 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 53 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 54 | "DATA","mm","millimetre","","" 55 | "DATA","%","percentage","","" 56 | "DATA","l/min","litres per minute","","" 57 | "DATA","hh:mm:ss","hh:mm:ss","","" 58 | 59 | "GROUP","LOCA" 60 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 61 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 62 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 63 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 64 | 65 | "GROUP","SAMP" 66 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE","SAMP_LINK" 67 | "UNIT","","m","","","","m","" 68 | "TYPE","ID","2DP","X","PA","ID","2DP","RL" 69 | "DATA","327-16A","2.50","1","D","","2.95","ISPT|327-16A|2.50" 70 | "DATA","327-16A","15.00","15","U","","15.45","" 71 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00","" 72 | 73 | "GROUP","LLPL" 74 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 75 | "UNIT","","m","","","","","m","%","%","","%" 76 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 77 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 78 | 79 | "GROUP","ISPT" 80 | "HEADING","LOCA_ID","ISPT_TOP","ISPT_SEAT","ISPT_MAIN","ISPT_NPEN","ISPT_NVAL","ISPT_REP","ISPT_CAS","ISPT_WAT","ISPT_TYPE","ISPT_HAM","ISPT_ERAT","ISPT_SWP","ISPT_INC1","ISPT_INC2","ISPT_INC3","ISPT_INC4","ISPT_INC5","ISPT_INC6","ISPT_PEN1","ISPT_PEN2","ISPT_PEN3","ISPT_PEN4","ISPT_PEN5","ISPT_PEN6","ISPT_ROCK","ISPT_REM","ISPT_ENV","ISPT_METH","ISPT_CRED","TEST_STAT","FILE_FSET" 81 | "UNIT","","m","","","mm","","","m","m","","","%","mm","","","","","","","mm","mm","mm","mm","mm","mm","","","","","","","" 82 | "TYPE","ID","2DP","0DP","0DP","0DP","0DP","X","2DP","X","PA","X","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","YN","X","X","X","X","X","X" 83 | "DATA","327-16A","2.50","2","5","450","5","N=5 (1,1/1,1,2,1)","0.00","0.000","S","","","0","1","1","1","1","2","1","75","75","75","75","75","75","","","","","","","" 84 | 85 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule12.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | "DATA","SAMP_TYPE","D","Small disturbed sample","","","" 17 | "DATA","ISPT_TYPE","S","Split spoon","","","" 18 | 19 | 20 | "GROUP","TRAN" 21 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 22 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 23 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 24 | "DATA","","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","TRAN,Empty REQUIRED fields","" 25 | 26 | "GROUP","TYPE" 27 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 28 | "UNIT","","","" 29 | "TYPE","X","X","X" 30 | "DATA","U","Undefined","" 31 | "DATA","X","Text","" 32 | "DATA","ID","Unique identifier","" 33 | "DATA","PA","ABBR pick list","" 34 | "DATA","2DP","Value; required number of decimal places, 2","" 35 | "DATA","DT","Date Time (ISO 8601:2004)","" 36 | "DATA","0DP","Value; required number of decimal places, 0","" 37 | "DATA","1DP","Value; required number of decimal places, 1","" 38 | "DATA","PT","TYPE pick list","" 39 | "DATA","PU","UNIT pick list","" 40 | "DATA","DMS","Degrees:Minutes:Seconds","" 41 | "DATA","T","Elapsed time","" 42 | "DATA","RL","Record link","" 43 | "DATA","XN","Text/Numeric","" 44 | "DATA","2SF","Value; required number of significant figures, 2","" 45 | "DATA","YN","Yes/No","" 46 | 47 | "GROUP","UNIT" 48 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 49 | "UNIT","","","","" 50 | "TYPE","X","X","X","X" 51 | "DATA","-","No unit","","" 52 | "DATA","m","metre","","" 53 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 54 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 55 | "DATA","mm","millimetre","","" 56 | "DATA","%","percentage","","" 57 | "DATA","l/min","litres per minute","","" 58 | "DATA","hh:mm:ss","hh:mm:ss","","" 59 | 60 | "GROUP","LOCA" 61 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 62 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 63 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 64 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 65 | 66 | "GROUP","SAMP" 67 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 68 | "UNIT","","m","","","","m" 69 | "TYPE","ID","2DP","X","PA","ID","2DP" 70 | "DATA","327-16A","2.50","1","D","","2.95" 71 | "DATA","327-16A","15.00","15","U","","15.45" 72 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 73 | 74 | "GROUP","LLPL" 75 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 76 | "UNIT","","m","","","","","m","%","%","","%" 77 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 78 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 79 | 80 | "GROUP","ISPT" 81 | "HEADING","LOCA_ID","ISPT_TOP","ISPT_SEAT","ISPT_MAIN","ISPT_NPEN","ISPT_NVAL","ISPT_REP","ISPT_CAS","ISPT_WAT","ISPT_TYPE","ISPT_HAM","ISPT_ERAT","ISPT_SWP","ISPT_INC1","ISPT_INC2","ISPT_INC3","ISPT_INC4","ISPT_INC5","ISPT_INC6","ISPT_PEN1","ISPT_PEN2","ISPT_PEN3","ISPT_PEN4","ISPT_PEN5","ISPT_PEN6","ISPT_ROCK","ISPT_REM","ISPT_ENV","ISPT_METH","ISPT_CRED","TEST_STAT","FILE_FSET" 82 | "UNIT","","m","","","mm","","","m","m","","","%","mm","","","","","","","mm","mm","mm","mm","mm","mm","","","","","","","" 83 | "TYPE","ID","2DP","0DP","0DP","0DP","0DP","X","2DP","X","PA","X","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","YN","X","X","X","X","X","X" 84 | "DATA","327-16A","2.50","2","5","450","5","N=5 (1,1/1,1,2,1)","0.00","0.000","S","","","0","1","1","1","1","2","1","75","75","75","75","75","75","","","","","","","" 85 | 86 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule13-2.ags: -------------------------------------------------------------------------------- 1 | 2 | "GROUP","ABBR" 3 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 4 | "UNIT","","","","","","" 5 | "TYPE","X","X","X","X","X","X" 6 | "DATA","DICT_TYPE","GROUP","Group","","","" 7 | "DATA","DICT_TYPE","HEADING","Heading","","","" 8 | "DATA","DICT_STAT","OTHER","Other Field","","","" 9 | "DATA","DICT_STAT","KEY","Key Field","","","" 10 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 11 | "DATA","SAMP_TYPE","D","Small disturbed sample","","","" 12 | "DATA","ISPT_TYPE","S","Split spoon","","","" 13 | 14 | 15 | "GROUP","TRAN" 16 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 17 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 18 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 19 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","PROJ table not found","" 20 | 21 | "GROUP","TYPE" 22 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 23 | "UNIT","","","" 24 | "TYPE","X","X","X" 25 | "DATA","U","Undefined","" 26 | "DATA","X","Text","" 27 | "DATA","ID","Unique identifier","" 28 | "DATA","PA","ABBR pick list","" 29 | "DATA","2DP","Value; required number of decimal places, 2","" 30 | "DATA","DT","Date Time (ISO 8601:2004)","" 31 | "DATA","0DP","Value; required number of decimal places, 0","" 32 | "DATA","1DP","Value; required number of decimal places, 1","" 33 | "DATA","PT","TYPE pick list","" 34 | "DATA","PU","UNIT pick list","" 35 | "DATA","DMS","Degrees:Minutes:Seconds","" 36 | "DATA","T","Elapsed time","" 37 | "DATA","RL","Record link","" 38 | "DATA","XN","Text/Numeric","" 39 | "DATA","2SF","Value; required number of significant figures, 2","" 40 | "DATA","YN","Yes/No","" 41 | 42 | "GROUP","UNIT" 43 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 44 | "UNIT","","","","" 45 | "TYPE","X","X","X","X" 46 | "DATA","-","No unit","","" 47 | "DATA","m","metre","","" 48 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 49 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 50 | "DATA","mm","millimetre","","" 51 | "DATA","%","percentage","","" 52 | "DATA","l/min","litres per minute","","" 53 | "DATA","hh:mm:ss","hh:mm:ss","","" 54 | 55 | "GROUP","LOCA" 56 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 57 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 58 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 59 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 60 | 61 | "GROUP","SAMP" 62 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 63 | "UNIT","","m","","","","m" 64 | "TYPE","ID","2DP","X","PA","ID","2DP" 65 | "DATA","327-16A","2.50","1","D","","2.95" 66 | "DATA","327-16A","15.00","15","U","","15.45" 67 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 68 | 69 | "GROUP","LLPL" 70 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 71 | "UNIT","","m","","","","","m","%","%","","%" 72 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 73 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 74 | 75 | "GROUP","ISPT" 76 | "HEADING","LOCA_ID","ISPT_TOP","ISPT_SEAT","ISPT_MAIN","ISPT_NPEN","ISPT_NVAL","ISPT_REP","ISPT_CAS","ISPT_WAT","ISPT_TYPE","ISPT_HAM","ISPT_ERAT","ISPT_SWP","ISPT_INC1","ISPT_INC2","ISPT_INC3","ISPT_INC4","ISPT_INC5","ISPT_INC6","ISPT_PEN1","ISPT_PEN2","ISPT_PEN3","ISPT_PEN4","ISPT_PEN5","ISPT_PEN6","ISPT_ROCK","ISPT_REM","ISPT_ENV","ISPT_METH","ISPT_CRED","TEST_STAT","FILE_FSET" 77 | "UNIT","","m","","","mm","","","m","m","","","%","mm","","","","","","","mm","mm","mm","mm","mm","mm","","","","","","","" 78 | "TYPE","ID","2DP","0DP","0DP","0DP","0DP","X","2DP","X","PA","X","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","YN","X","X","X","X","X","X" 79 | "DATA","327-16A","2.50","2","5","450","5","N=5 (1,1/1,1,2,1)","0.00","0.000","S","","","0","1","1","1","1","2","1","75","75","75","75","75","75","","","","","","","" 80 | 81 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule14-2.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | "DATA","SAMP_TYPE","D","Small disturbed sample","","","" 17 | "DATA","ISPT_TYPE","S","Split spoon","","","" 18 | 19 | "GROUP","TYPE" 20 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 21 | "UNIT","","","" 22 | "TYPE","X","X","X" 23 | "DATA","U","Undefined","" 24 | "DATA","X","Text","" 25 | "DATA","ID","Unique identifier","" 26 | "DATA","PA","ABBR pick list","" 27 | "DATA","2DP","Value; required number of decimal places, 2","" 28 | "DATA","DT","Date Time (ISO 8601:2004)","" 29 | "DATA","0DP","Value; required number of decimal places, 0","" 30 | "DATA","1DP","Value; required number of decimal places, 1","" 31 | "DATA","PT","TYPE pick list","" 32 | "DATA","PU","UNIT pick list","" 33 | "DATA","DMS","Degrees:Minutes:Seconds","" 34 | "DATA","T","Elapsed time","" 35 | "DATA","RL","Record link","" 36 | "DATA","XN","Text/Numeric","" 37 | "DATA","2SF","Value; required number of significant figures, 2","" 38 | "DATA","YN","Yes/No","" 39 | 40 | "GROUP","UNIT" 41 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 42 | "UNIT","","","","" 43 | "TYPE","X","X","X","X" 44 | "DATA","-","No unit","","" 45 | "DATA","m","metre","","" 46 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 47 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 48 | "DATA","mm","millimetre","","" 49 | "DATA","%","percentage","","" 50 | "DATA","l/min","litres per minute","","" 51 | "DATA","hh:mm:ss","hh:mm:ss","","" 52 | 53 | "GROUP","LOCA" 54 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 55 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 56 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 57 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 58 | 59 | "GROUP","SAMP" 60 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 61 | "UNIT","","m","","","","m" 62 | "TYPE","ID","2DP","X","PA","ID","2DP" 63 | "DATA","327-16A","2.50","1","D","","2.95" 64 | "DATA","327-16A","15.00","15","U","","15.45" 65 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 66 | 67 | "GROUP","LLPL" 68 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 69 | "UNIT","","m","","","","","m","%","%","","%" 70 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 71 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 72 | 73 | "GROUP","ISPT" 74 | "HEADING","LOCA_ID","ISPT_TOP","ISPT_SEAT","ISPT_MAIN","ISPT_NPEN","ISPT_NVAL","ISPT_REP","ISPT_CAS","ISPT_WAT","ISPT_TYPE","ISPT_HAM","ISPT_ERAT","ISPT_SWP","ISPT_INC1","ISPT_INC2","ISPT_INC3","ISPT_INC4","ISPT_INC5","ISPT_INC6","ISPT_PEN1","ISPT_PEN2","ISPT_PEN3","ISPT_PEN4","ISPT_PEN5","ISPT_PEN6","ISPT_ROCK","ISPT_REM","ISPT_ENV","ISPT_METH","ISPT_CRED","TEST_STAT","FILE_FSET" 75 | "UNIT","","m","","","mm","","","m","m","","","%","mm","","","","","","","mm","mm","mm","mm","mm","mm","","","","","","","" 76 | "TYPE","ID","2DP","0DP","0DP","0DP","0DP","X","2DP","X","PA","X","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","YN","X","X","X","X","X","X" 77 | "DATA","327-16A","2.50","2","5","450","5","N=5 (1,1/1,1,2,1)","0.00","0.000","S","","","0","1","1","1","1","2","1","75","75","75","75","75","75","","","","","","","" 78 | 79 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule14-3.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | "DATA","SAMP_TYPE","D","Small disturbed sample","","","" 17 | "DATA","ISPT_TYPE","S","Split spoon","","","" 18 | 19 | 20 | "GROUP","TRAN" 21 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 22 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 23 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 24 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","Data type,YN,not found in TYPE table","" 25 | 26 | "GROUP","TYPE" 27 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 28 | "UNIT","","","" 29 | "TYPE","X","X","X" 30 | "DATA","U","Undefined","" 31 | "DATA","X","Text","" 32 | "DATA","ID","Unique identifier","" 33 | "DATA","PA","ABBR pick list","" 34 | "DATA","2DP","Value; required number of decimal places, 2","" 35 | "DATA","DT","Date Time (ISO 8601:2004)","" 36 | "DATA","0DP","Value; required number of decimal places, 0","" 37 | "DATA","1DP","Value; required number of decimal places, 1","" 38 | "DATA","PT","TYPE pick list","" 39 | "DATA","PU","UNIT pick list","" 40 | "DATA","DMS","Degrees:Minutes:Seconds","" 41 | "DATA","T","Elapsed time","" 42 | "DATA","RL","Record link","" 43 | "DATA","XN","Text/Numeric","" 44 | "DATA","2SF","Value; required number of significant figures, 2","" 45 | 46 | "GROUP","UNIT" 47 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 48 | "UNIT","","","","" 49 | "TYPE","X","X","X","X" 50 | "DATA","-","No unit","","" 51 | "DATA","m","metre","","" 52 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 53 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 54 | "DATA","mm","millimetre","","" 55 | "DATA","%","percentage","","" 56 | "DATA","l/min","litres per minute","","" 57 | "DATA","hh:mm:ss","hh:mm:ss","","" 58 | 59 | "GROUP","LOCA" 60 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 61 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 62 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 63 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 64 | 65 | "GROUP","SAMP" 66 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 67 | "UNIT","","m","","","","m" 68 | "TYPE","ID","2DP","X","PA","ID","2DP" 69 | "DATA","327-16A","2.50","1","D","","2.95" 70 | "DATA","327-16A","15.00","15","U","","15.45" 71 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 72 | 73 | "GROUP","LLPL" 74 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 75 | "UNIT","","m","","","","","m","%","%","","%" 76 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 77 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 78 | 79 | "GROUP","ISPT" 80 | "HEADING","LOCA_ID","ISPT_TOP","ISPT_SEAT","ISPT_MAIN","ISPT_NPEN","ISPT_NVAL","ISPT_REP","ISPT_CAS","ISPT_WAT","ISPT_TYPE","ISPT_HAM","ISPT_ERAT","ISPT_SWP","ISPT_INC1","ISPT_INC2","ISPT_INC3","ISPT_INC4","ISPT_INC5","ISPT_INC6","ISPT_PEN1","ISPT_PEN2","ISPT_PEN3","ISPT_PEN4","ISPT_PEN5","ISPT_PEN6","ISPT_ROCK","ISPT_REM","ISPT_ENV","ISPT_METH","ISPT_CRED","TEST_STAT","FILE_FSET" 81 | "UNIT","","m","","","mm","","","m","m","","","%","mm","","","","","","","mm","mm","mm","mm","mm","mm","","","","","","","" 82 | "TYPE","ID","2DP","0DP","0DP","0DP","0DP","X","2DP","X","PA","X","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","YN","X","X","X","X","X","X" 83 | "DATA","327-16A","2.50","2","5","450","5","N=5 (1,1/1,1,2,1)","0.00","0.000","S","","","0","1","1","1","1","2","1","75","75","75","75","75","75","","","","","","","" 84 | 85 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule15-1.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | "DATA","SAMP_TYPE","D","Small disturbed sample","","","" 17 | "DATA","ISPT_TYPE","S","Split spoon","","","" 18 | 19 | 20 | "GROUP","TRAN" 21 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 22 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 23 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 24 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","UNIT table not found","" 25 | 26 | "GROUP","TYPE" 27 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 28 | "UNIT","","","" 29 | "TYPE","X","X","X" 30 | "DATA","U","Undefined","" 31 | "DATA","X","Text","" 32 | "DATA","ID","Unique identifier","" 33 | "DATA","PA","ABBR pick list","" 34 | "DATA","2DP","Value; required number of decimal places, 2","" 35 | "DATA","DT","Date Time (ISO 8601:2004)","" 36 | "DATA","0DP","Value; required number of decimal places, 0","" 37 | "DATA","1DP","Value; required number of decimal places, 1","" 38 | "DATA","PT","TYPE pick list","" 39 | "DATA","PU","UNIT pick list","" 40 | "DATA","DMS","Degrees:Minutes:Seconds","" 41 | "DATA","T","Elapsed time","" 42 | "DATA","RL","Record link","" 43 | "DATA","XN","Text/Numeric","" 44 | "DATA","2SF","Value; required number of significant figures, 2","" 45 | "DATA","YN","Yes/No","" 46 | 47 | "GROUP","LOCA" 48 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 49 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 50 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 51 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 52 | 53 | "GROUP","SAMP" 54 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 55 | "UNIT","","m","","","","m" 56 | "TYPE","ID","2DP","X","PA","ID","2DP" 57 | "DATA","327-16A","2.50","1","D","","2.95" 58 | "DATA","327-16A","15.00","15","U","","15.45" 59 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 60 | 61 | "GROUP","LLPL" 62 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 63 | "UNIT","","m","","","","","m","%","%","","%" 64 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 65 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 66 | 67 | "GROUP","ISPT" 68 | "HEADING","LOCA_ID","ISPT_TOP","ISPT_SEAT","ISPT_MAIN","ISPT_NPEN","ISPT_NVAL","ISPT_REP","ISPT_CAS","ISPT_WAT","ISPT_TYPE","ISPT_HAM","ISPT_ERAT","ISPT_SWP","ISPT_INC1","ISPT_INC2","ISPT_INC3","ISPT_INC4","ISPT_INC5","ISPT_INC6","ISPT_PEN1","ISPT_PEN2","ISPT_PEN3","ISPT_PEN4","ISPT_PEN5","ISPT_PEN6","ISPT_ROCK","ISPT_REM","ISPT_ENV","ISPT_METH","ISPT_CRED","TEST_STAT","FILE_FSET" 69 | "UNIT","","m","","","mm","","","m","m","","","%","mm","","","","","","","mm","mm","mm","mm","mm","mm","","","","","","","" 70 | "TYPE","ID","2DP","0DP","0DP","0DP","0DP","X","2DP","X","PA","X","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","YN","X","X","X","X","X","X" 71 | "DATA","327-16A","2.50","2","5","450","5","N=5 (1,1/1,1,2,1)","0.00","0.000","S","","","0","1","1","1","1","2","1","75","75","75","75","75","75","","","","","","","" 72 | 73 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule15-2.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | "DATA","SAMP_TYPE","D","Small disturbed sample","","","" 17 | "DATA","ISPT_TYPE","S","Split spoon","","","" 18 | 19 | 20 | "GROUP","TRAN" 21 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 22 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 23 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 24 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","Unit,%,not found in UNIT table","" 25 | 26 | "GROUP","TYPE" 27 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 28 | "UNIT","","","" 29 | "TYPE","X","X","X" 30 | "DATA","U","Undefined","" 31 | "DATA","X","Text","" 32 | "DATA","ID","Unique identifier","" 33 | "DATA","PA","ABBR pick list","" 34 | "DATA","2DP","Value; required number of decimal places, 2","" 35 | "DATA","DT","Date Time (ISO 8601:2004)","" 36 | "DATA","0DP","Value; required number of decimal places, 0","" 37 | "DATA","1DP","Value; required number of decimal places, 1","" 38 | "DATA","PT","TYPE pick list","" 39 | "DATA","PU","UNIT pick list","" 40 | "DATA","DMS","Degrees:Minutes:Seconds","" 41 | "DATA","T","Elapsed time","" 42 | "DATA","RL","Record link","" 43 | "DATA","XN","Text/Numeric","" 44 | "DATA","2SF","Value; required number of significant figures, 2","" 45 | "DATA","YN","Yes/No","" 46 | 47 | "GROUP","UNIT" 48 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 49 | "UNIT","","","","" 50 | "TYPE","X","X","X","X" 51 | "DATA","-","No unit","","" 52 | "DATA","m","metre","","" 53 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 54 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 55 | "DATA","mm","millimetre","","" 56 | "DATA","l/min","litres per minute","","" 57 | "DATA","hh:mm:ss","hh:mm:ss","","" 58 | 59 | "GROUP","LOCA" 60 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 61 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 62 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 63 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 64 | 65 | "GROUP","SAMP" 66 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 67 | "UNIT","","m","","","","m" 68 | "TYPE","ID","2DP","X","PA","ID","2DP" 69 | "DATA","327-16A","2.50","1","D","","2.95" 70 | "DATA","327-16A","15.00","15","U","","15.45" 71 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 72 | 73 | "GROUP","LLPL" 74 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 75 | "UNIT","","m","","","","","m","%","%","","%" 76 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 77 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 78 | 79 | "GROUP","ISPT" 80 | "HEADING","LOCA_ID","ISPT_TOP","ISPT_SEAT","ISPT_MAIN","ISPT_NPEN","ISPT_NVAL","ISPT_REP","ISPT_CAS","ISPT_WAT","ISPT_TYPE","ISPT_HAM","ISPT_ERAT","ISPT_SWP","ISPT_INC1","ISPT_INC2","ISPT_INC3","ISPT_INC4","ISPT_INC5","ISPT_INC6","ISPT_PEN1","ISPT_PEN2","ISPT_PEN3","ISPT_PEN4","ISPT_PEN5","ISPT_PEN6","ISPT_ROCK","ISPT_REM","ISPT_ENV","ISPT_METH","ISPT_CRED","TEST_STAT","FILE_FSET" 81 | "UNIT","","m","","","mm","","","m","m","","","%","mm","","","","","","","mm","mm","mm","mm","mm","mm","","","","","","","" 82 | "TYPE","ID","2DP","0DP","0DP","0DP","0DP","X","2DP","X","PA","X","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","0DP","YN","X","X","X","X","X","X" 83 | "DATA","327-16A","2.50","2","5","450","5","N=5 (1,1/1,1,2,1)","0.00","0.000","S","","","0","1","1","1","1","2","1","75","75","75","75","75","75","","","","","","","" 84 | 85 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule16-1.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | 16 | "GROUP","TRAN" 17 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 18 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 19 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 20 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","SAMP,U,under SAMP_TYPE in SAMP not found in ABBR table","" 21 | 22 | "GROUP","TYPE" 23 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 24 | "UNIT","","","" 25 | "TYPE","X","X","X" 26 | "DATA","U","Undefined","" 27 | "DATA","X","Text","" 28 | "DATA","ID","Unique identifier","" 29 | "DATA","PA","ABBR pick list","" 30 | "DATA","2DP","Value; required number of decimal places, 2","" 31 | "DATA","DT","Date Time (ISO 8601:2004)","" 32 | "DATA","0DP","Value; required number of decimal places, 0","" 33 | "DATA","1DP","Value; required number of decimal places, 1","" 34 | "DATA","PT","TYPE pick list","" 35 | "DATA","PU","UNIT pick list","" 36 | "DATA","DMS","Degrees:Minutes:Seconds","" 37 | "DATA","T","Elapsed time","" 38 | "DATA","RL","Record link","" 39 | "DATA","XN","Text/Numeric","" 40 | "DATA","2SF","Value; required number of significant figures, 2","" 41 | 42 | "GROUP","UNIT" 43 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 44 | "UNIT","","","","" 45 | "TYPE","X","X","X","X" 46 | "DATA","-","No unit","","" 47 | "DATA","m","metre","","" 48 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 49 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 50 | "DATA","mm","millimetre","","" 51 | "DATA","%","percentage","","" 52 | "DATA","l/min","litres per minute","","" 53 | "DATA","hh:mm:ss","hh:mm:ss","","" 54 | 55 | "GROUP","LOCA" 56 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 57 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 58 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 59 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 60 | 61 | "GROUP","SAMP" 62 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 63 | "UNIT","","m","","","","m" 64 | "TYPE","ID","2DP","X","PA","ID","2DP" 65 | "DATA","327-16A","15.00","15","U","","15.45" 66 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 67 | 68 | "GROUP","LLPL" 69 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 70 | "UNIT","","m","","","","","m","%","%","","%" 71 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 72 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 73 | "DATA","327-16A","15.00","15","U","","2","15.00","40","20","20","15" 74 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule16-3.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | 8 | "GROUP","TRAN" 9 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 10 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 11 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 12 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","ABBR table not found","" 13 | 14 | "GROUP","TYPE" 15 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 16 | "UNIT","","","" 17 | "TYPE","X","X","X" 18 | "DATA","U","Undefined","" 19 | "DATA","X","Text","" 20 | "DATA","ID","Unique identifier","" 21 | "DATA","PA","ABBR pick list","" 22 | "DATA","2DP","Value; required number of decimal places, 2","" 23 | "DATA","DT","Date Time (ISO 8601:2004)","" 24 | "DATA","0DP","Value; required number of decimal places, 0","" 25 | "DATA","1DP","Value; required number of decimal places, 1","" 26 | "DATA","PT","TYPE pick list","" 27 | "DATA","PU","UNIT pick list","" 28 | "DATA","DMS","Degrees:Minutes:Seconds","" 29 | "DATA","T","Elapsed time","" 30 | "DATA","RL","Record link","" 31 | "DATA","XN","Text/Numeric","" 32 | "DATA","2SF","Value; required number of significant figures, 2","" 33 | 34 | "GROUP","UNIT" 35 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 36 | "UNIT","","","","" 37 | "TYPE","X","X","X","X" 38 | "DATA","-","No unit","","" 39 | "DATA","m","metre","","" 40 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 41 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 42 | "DATA","mm","millimetre","","" 43 | "DATA","%","percentage","","" 44 | "DATA","l/min","litres per minute","","" 45 | "DATA","hh:mm:ss","hh:mm:ss","","" 46 | 47 | "GROUP","LOCA" 48 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 49 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 50 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 51 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 52 | 53 | "GROUP","SAMP" 54 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 55 | "UNIT","","m","","","","m" 56 | "TYPE","ID","2DP","X","PA","ID","2DP" 57 | "DATA","327-16A","15.00","15","U","","15.45" 58 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 59 | 60 | "GROUP","LLPL" 61 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 62 | "UNIT","","m","","","","","m","%","%","","%" 63 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 64 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 65 | "DATA","327-16A","15.00","15","U","","2","15.00","40","20","20","15" 66 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule16b-2.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | 8 | "GROUP","TRAN" 9 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 10 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 11 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 12 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","CP,under LOCA_TYPE in LOCA not found in ABBR table,LOCA,RC, under LOCA_TYPE in LOCA not found in ABBR table","" 13 | 14 | "GROUP","ABBR" 15 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 16 | "UNIT","","","","","","" 17 | "TYPE","X","X","X","X","X","X" 18 | "DATA","DICT_TYPE","GROUP","Group","","","" 19 | "DATA","DICT_TYPE","HEADING","Heading","","","" 20 | "DATA","DICT_STAT","OTHER","Other Field","","","" 21 | "DATA","DICT_STAT","KEY","Key Field","","","" 22 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 23 | "DATA","SAMP_TYPE","D","Small disturbed sample","","","" 24 | "DATA","ISPT_TYPE","S","Split spoon","","","" 25 | "DATA","LOCA_TYPE","CP+RC","Cable percussion (shell and auger) + Rotary cored","","","" 26 | 27 | "GROUP","TYPE" 28 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 29 | "UNIT","","","" 30 | "TYPE","X","X","X" 31 | "DATA","U","Undefined","" 32 | "DATA","X","Text","" 33 | "DATA","ID","Unique identifier","" 34 | "DATA","PA","ABBR pick list","" 35 | "DATA","2DP","Value; required number of decimal places, 2","" 36 | "DATA","DT","Date Time (ISO 8601:2004)","" 37 | "DATA","0DP","Value; required number of decimal places, 0","" 38 | "DATA","1DP","Value; required number of decimal places, 1","" 39 | "DATA","PT","TYPE pick list","" 40 | "DATA","PU","UNIT pick list","" 41 | "DATA","DMS","Degrees:Minutes:Seconds","" 42 | "DATA","T","Elapsed time","" 43 | "DATA","RL","Record link","" 44 | "DATA","XN","Text/Numeric","" 45 | "DATA","2SF","Value; required number of significant figures, 2","" 46 | 47 | "GROUP","UNIT" 48 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 49 | "UNIT","","","","" 50 | "TYPE","X","X","X","X" 51 | "DATA","-","No unit","","" 52 | "DATA","m","metre","","" 53 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 54 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 55 | "DATA","mm","millimetre","","" 56 | "DATA","%","percentage","","" 57 | "DATA","l/min","litres per minute","","" 58 | "DATA","hh:mm:ss","hh:mm:ss","","" 59 | 60 | "GROUP","LOCA" 61 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 62 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 63 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 64 | "DATA","327-16A","CP+RC","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 65 | 66 | "GROUP","SAMP" 67 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 68 | "UNIT","","m","","","","m" 69 | "TYPE","ID","2DP","X","PA","ID","2DP" 70 | "DATA","327-16A","15.00","15","U","","15.45" 71 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 72 | 73 | "GROUP","LLPL" 74 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 75 | "UNIT","","m","","","","","m","%","%","","%" 76 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 77 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 78 | "DATA","327-16A","15.00","15","U","","2","15.00","40","20","20","15" 79 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule16b-3.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | 8 | "GROUP","TRAN" 9 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 10 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 11 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 12 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","CP ,under LOCA_TYPE in LOCA not found in ABBR table, RC,under LOCA_TYPE in LOCA not found in ABBR table,","" 13 | 14 | "GROUP","ABBR" 15 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 16 | "UNIT","","","","","","" 17 | "TYPE","X","X","X","X","X","X" 18 | "DATA","DICT_TYPE","GROUP","Group","","","" 19 | "DATA","DICT_TYPE","HEADING","Heading","","","" 20 | "DATA","DICT_STAT","OTHER","Other Field","","","" 21 | "DATA","DICT_STAT","KEY","Key Field","","","" 22 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 23 | "DATA","SAMP_TYPE","D","Small disturbed sample","","","" 24 | "DATA","ISPT_TYPE","S","Split spoon","","","" 25 | "DATA","LOCA_TYPE","CP","Cable percussion (shell and auger)","","","" 26 | "DATA","LOCA_TYPE","RC","Rotary cored","","","" 27 | 28 | "GROUP","TYPE" 29 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 30 | "UNIT","","","" 31 | "TYPE","X","X","X" 32 | "DATA","U","Undefined","" 33 | "DATA","X","Text","" 34 | "DATA","ID","Unique identifier","" 35 | "DATA","PA","ABBR pick list","" 36 | "DATA","2DP","Value; required number of decimal places, 2","" 37 | "DATA","DT","Date Time (ISO 8601:2004)","" 38 | "DATA","0DP","Value; required number of decimal places, 0","" 39 | "DATA","1DP","Value; required number of decimal places, 1","" 40 | "DATA","PT","TYPE pick list","" 41 | "DATA","PU","UNIT pick list","" 42 | "DATA","DMS","Degrees:Minutes:Seconds","" 43 | "DATA","T","Elapsed time","" 44 | "DATA","RL","Record link","" 45 | "DATA","XN","Text/Numeric","" 46 | "DATA","2SF","Value; required number of significant figures, 2","" 47 | 48 | "GROUP","UNIT" 49 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 50 | "UNIT","","","","" 51 | "TYPE","X","X","X","X" 52 | "DATA","-","No unit","","" 53 | "DATA","m","metre","","" 54 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 55 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 56 | "DATA","mm","millimetre","","" 57 | "DATA","%","percentage","","" 58 | "DATA","l/min","litres per minute","","" 59 | "DATA","hh:mm:ss","hh:mm:ss","","" 60 | 61 | "GROUP","LOCA" 62 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 63 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 64 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 65 | "DATA","327-16A","CP + RC","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 66 | 67 | "GROUP","SAMP" 68 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 69 | "UNIT","","m","","","","m" 70 | "TYPE","ID","2DP","X","PA","ID","2DP" 71 | "DATA","327-16A","15.00","15","U","","15.45" 72 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 73 | 74 | "GROUP","LLPL" 75 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 76 | "UNIT","","m","","","","","m","%","%","","%" 77 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 78 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 79 | "DATA","327-16A","15.00","15","U","","2","15.00","40","20","20","15" 80 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule16b-4.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | 8 | "GROUP","TRAN" 9 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 10 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 11 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 12 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","","TRAN_RCON missing","" 13 | 14 | "GROUP","ABBR" 15 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 16 | "UNIT","","","","","","" 17 | "TYPE","X","X","X","X","X","X" 18 | "DATA","DICT_TYPE","GROUP","Group","","","" 19 | "DATA","DICT_TYPE","HEADING","Heading","","","" 20 | "DATA","DICT_STAT","OTHER","Other Field","","","" 21 | "DATA","DICT_STAT","KEY","Key Field","","","" 22 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 23 | "DATA","SAMP_TYPE","D","Small disturbed sample","","","" 24 | "DATA","ISPT_TYPE","S","Split spoon","","","" 25 | "DATA","LOCA_TYPE","CP","Cable percussion (shell and auger)","","","" 26 | "DATA","LOCA_TYPE","RC","Rotary cored","","","" 27 | 28 | "GROUP","TYPE" 29 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 30 | "UNIT","","","" 31 | "TYPE","X","X","X" 32 | "DATA","U","Undefined","" 33 | "DATA","X","Text","" 34 | "DATA","ID","Unique identifier","" 35 | "DATA","PA","ABBR pick list","" 36 | "DATA","2DP","Value; required number of decimal places, 2","" 37 | "DATA","DT","Date Time (ISO 8601:2004)","" 38 | "DATA","0DP","Value; required number of decimal places, 0","" 39 | "DATA","1DP","Value; required number of decimal places, 1","" 40 | "DATA","PT","TYPE pick list","" 41 | "DATA","PU","UNIT pick list","" 42 | "DATA","DMS","Degrees:Minutes:Seconds","" 43 | "DATA","T","Elapsed time","" 44 | "DATA","RL","Record link","" 45 | "DATA","XN","Text/Numeric","" 46 | "DATA","2SF","Value; required number of significant figures, 2","" 47 | 48 | "GROUP","UNIT" 49 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 50 | "UNIT","","","","" 51 | "TYPE","X","X","X","X" 52 | "DATA","-","No unit","","" 53 | "DATA","m","metre","","" 54 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 55 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 56 | "DATA","mm","millimetre","","" 57 | "DATA","%","percentage","","" 58 | "DATA","l/min","litres per minute","","" 59 | "DATA","hh:mm:ss","hh:mm:ss","","" 60 | 61 | "GROUP","LOCA" 62 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 63 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 64 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 65 | "DATA","327-16A","CP+RC","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 66 | 67 | "GROUP","SAMP" 68 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 69 | "UNIT","","m","","","","m" 70 | "TYPE","ID","2DP","X","PA","ID","2DP" 71 | "DATA","327-16A","15.00","15","U","","15.45" 72 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 73 | 74 | "GROUP","LLPL" 75 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 76 | "UNIT","","m","","","","","m","%","%","","%" 77 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 78 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 79 | "DATA","327-16A","15.00","15","U","","2","15.00","40","20","20","15" 80 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule16b-5.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | 8 | "GROUP","TRAN" 9 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 10 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 11 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 12 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","","TRAN_RCON missing","" 13 | 14 | "GROUP","ABBR" 15 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 16 | "UNIT","","","","","","" 17 | "TYPE","X","X","X","X","X","X" 18 | "DATA","DICT_TYPE","GROUP","Group","","","" 19 | "DATA","DICT_TYPE","HEADING","Heading","","","" 20 | "DATA","DICT_STAT","OTHER","Other Field","","","" 21 | "DATA","DICT_STAT","KEY","Key Field","","","" 22 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 23 | "DATA","SAMP_TYPE","D","Small disturbed sample","","","" 24 | "DATA","ISPT_TYPE","S","Split spoon","","","" 25 | "DATA","LOCA_TYPE","CP","Cable percussion (shell and auger)","","","" 26 | "DATA","LOCA_TYPE","RC","Rotary cored","","","" 27 | 28 | "GROUP","TYPE" 29 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 30 | "UNIT","","","" 31 | "TYPE","X","X","X" 32 | "DATA","U","Undefined","" 33 | "DATA","X","Text","" 34 | "DATA","ID","Unique identifier","" 35 | "DATA","PA","ABBR pick list","" 36 | "DATA","2DP","Value; required number of decimal places, 2","" 37 | "DATA","DT","Date Time (ISO 8601:2004)","" 38 | "DATA","0DP","Value; required number of decimal places, 0","" 39 | "DATA","1DP","Value; required number of decimal places, 1","" 40 | "DATA","PT","TYPE pick list","" 41 | "DATA","PU","UNIT pick list","" 42 | "DATA","DMS","Degrees:Minutes:Seconds","" 43 | "DATA","T","Elapsed time","" 44 | "DATA","RL","Record link","" 45 | "DATA","XN","Text/Numeric","" 46 | "DATA","2SF","Value; required number of significant figures, 2","" 47 | 48 | "GROUP","UNIT" 49 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 50 | "UNIT","","","","" 51 | "TYPE","X","X","X","X" 52 | "DATA","-","No unit","","" 53 | "DATA","m","metre","","" 54 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 55 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 56 | "DATA","mm","millimetre","","" 57 | "DATA","%","percentage","","" 58 | "DATA","l/min","litres per minute","","" 59 | "DATA","hh:mm:ss","hh:mm:ss","","" 60 | 61 | "GROUP","LOCA" 62 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 63 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 64 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 65 | "DATA","327-16A","CP","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 66 | 67 | "GROUP","SAMP" 68 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 69 | "UNIT","","m","","","","m" 70 | "TYPE","ID","2DP","X","PA","ID","2DP" 71 | "DATA","327-16A","15.00","15","U","","15.45" 72 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 73 | 74 | "GROUP","LLPL" 75 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 76 | "UNIT","","m","","","","","m","%","%","","%" 77 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 78 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 79 | "DATA","327-16A","15.00","15","U","","2","15.00","40","20","20","15" 80 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule17-1.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | 8 | "GROUP","TRAN" 9 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 10 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 11 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 12 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","ID,not found in TYPE table","" 13 | 14 | "GROUP","ABBR" 15 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 16 | "UNIT","","","","","","" 17 | "TYPE","X","X","X","X","X","X" 18 | "DATA","DICT_TYPE","GROUP","Group","","","" 19 | "DATA","DICT_TYPE","HEADING","Heading","","","" 20 | "DATA","DICT_STAT","OTHER","Other Field","","","" 21 | "DATA","DICT_STAT","KEY","Key Field","","","" 22 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 23 | "DATA","SAMP_TYPE","D","Small disturbed sample","","","" 24 | "DATA","ISPT_TYPE","S","Split spoon","","","" 25 | "DATA","LOCA_TYPE","CP","Cable percussion (shell and auger)","","","" 26 | "DATA","LOCA_TYPE","RC","Rotary cored","","","" 27 | 28 | "GROUP","TYPE" 29 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 30 | "UNIT","","","" 31 | "TYPE","X","X","X" 32 | "DATA","U","Undefined","" 33 | "DATA","X","Text","" 34 | "DATA","PA","ABBR pick list","" 35 | "DATA","2DP","Value; required number of decimal places, 2","" 36 | "DATA","DT","Date Time (ISO 8601:2004)","" 37 | "DATA","0DP","Value; required number of decimal places, 0","" 38 | "DATA","1DP","Value; required number of decimal places, 1","" 39 | "DATA","PT","TYPE pick list","" 40 | "DATA","PU","UNIT pick list","" 41 | "DATA","DMS","Degrees:Minutes:Seconds","" 42 | "DATA","T","Elapsed time","" 43 | "DATA","RL","Record link","" 44 | "DATA","XN","Text/Numeric","" 45 | "DATA","2SF","Value; required number of significant figures, 2","" 46 | 47 | "GROUP","UNIT" 48 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 49 | "UNIT","","","","" 50 | "TYPE","X","X","X","X" 51 | "DATA","-","No unit","","" 52 | "DATA","m","metre","","" 53 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 54 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 55 | "DATA","mm","millimetre","","" 56 | "DATA","%","percentage","","" 57 | "DATA","l/min","litres per minute","","" 58 | "DATA","hh:mm:ss","hh:mm:ss","","" 59 | 60 | "GROUP","LOCA" 61 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 62 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 63 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 64 | "DATA","327-16A","CP+RC","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 65 | 66 | "GROUP","SAMP" 67 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 68 | "UNIT","","m","","","","m" 69 | "TYPE","ID","2DP","X","PA","ID","2DP" 70 | "DATA","327-16A","15.00","15","U","","15.45" 71 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 72 | 73 | "GROUP","LLPL" 74 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 75 | "UNIT","","m","","","","","m","%","%","","%" 76 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 77 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 78 | "DATA","327-16A","15.00","15","U","","2","15.00","40","20","20","15" 79 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule17-2.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | 8 | "GROUP","TRAN" 9 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 10 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 11 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 12 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","TYPE table not found","" 13 | 14 | "GROUP","ABBR" 15 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 16 | "UNIT","","","","","","" 17 | "TYPE","X","X","X","X","X","X" 18 | "DATA","DICT_TYPE","GROUP","Group","","","" 19 | "DATA","DICT_TYPE","HEADING","Heading","","","" 20 | "DATA","DICT_STAT","OTHER","Other Field","","","" 21 | "DATA","DICT_STAT","KEY","Key Field","","","" 22 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 23 | "DATA","SAMP_TYPE","D","Small disturbed sample","","","" 24 | "DATA","ISPT_TYPE","S","Split spoon","","","" 25 | "DATA","LOCA_TYPE","CP","Cable percussion (shell and auger)","","","" 26 | "DATA","LOCA_TYPE","RC","Rotary cored","","","" 27 | 28 | 29 | "GROUP","UNIT" 30 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 31 | "UNIT","","","","" 32 | "TYPE","X","X","X","X" 33 | "DATA","-","No unit","","" 34 | "DATA","m","metre","","" 35 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 36 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 37 | "DATA","mm","millimetre","","" 38 | "DATA","%","percentage","","" 39 | "DATA","l/min","litres per minute","","" 40 | "DATA","hh:mm:ss","hh:mm:ss","","" 41 | 42 | "GROUP","LOCA" 43 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 44 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 45 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 46 | "DATA","327-16A","CP+RC","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 47 | 48 | "GROUP","SAMP" 49 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 50 | "UNIT","","m","","","","m" 51 | "TYPE","ID","2DP","X","PA","ID","2DP" 52 | "DATA","327-16A","15.00","15","U","","15.45" 53 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 54 | 55 | "GROUP","LLPL" 56 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 57 | "UNIT","","m","","","","","m","%","%","","%" 58 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 59 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 60 | "DATA","327-16A","15.00","15","U","","2","15.00","40","20","20","15" 61 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule18-1.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | 8 | "GROUP","TRAN" 9 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 10 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 11 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 12 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","LOCA_APPG not found in DICT table","" 13 | 14 | "GROUP","ABBR" 15 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 16 | "UNIT","","","","","","" 17 | "TYPE","X","X","X","X","X","X" 18 | "DATA","DICT_TYPE","GROUP","Group","","","" 19 | "DATA","DICT_TYPE","HEADING","Heading","","","" 20 | "DATA","DICT_STAT","OTHER","Other Field","","","" 21 | "DATA","DICT_STAT","KEY","Key Field","","","" 22 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 23 | "DATA","SAMP_TYPE","D","Small disturbed sample","","","" 24 | "DATA","ISPT_TYPE","S","Split spoon","","","" 25 | "DATA","LOCA_TYPE","CP","Cable percussion (shell and auger)","","","" 26 | "DATA","LOCA_TYPE","RC","Rotary cored","","","" 27 | 28 | "GROUP","DICT" 29 | "HEADING","DICT_TYPE","DICT_GRP","DICT_HDNG","DICT_STAT","DICT_DTYP","DICT_DESC","DICT_UNIT","DICT_EXMP","DICT_PGRP","DICT_REM","FILE_FSET" 30 | "UNIT","","","","","","","","","","","" 31 | "TYPE","PA","X","X","PA","PT","X","PU","X","X","X","X" 32 | "DATA","HEADING","LOCA","LOCA_CHKG","OTHER","X","The person who checked the data for this Location","","","","","" 33 | 34 | "GROUP","TYPE" 35 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 36 | "UNIT","","","" 37 | "TYPE","X","X","X" 38 | "DATA","U","Undefined","" 39 | "DATA","X","Text","" 40 | "DATA","ID","Unique identifier","" 41 | "DATA","PA","ABBR pick list","" 42 | "DATA","2DP","Value; required number of decimal places, 2","" 43 | "DATA","DT","Date Time (ISO 8601:2004)","" 44 | "DATA","0DP","Value; required number of decimal places, 0","" 45 | "DATA","1DP","Value; required number of decimal places, 1","" 46 | "DATA","PT","TYPE pick list","" 47 | "DATA","PU","UNIT pick list","" 48 | "DATA","DMS","Degrees:Minutes:Seconds","" 49 | "DATA","T","Elapsed time","" 50 | "DATA","RL","Record link","" 51 | "DATA","XN","Text/Numeric","" 52 | "DATA","2SF","Value; required number of significant figures, 2","" 53 | "DATA","YN","Yes/No","" 54 | 55 | "GROUP","UNIT" 56 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 57 | "UNIT","","","","" 58 | "TYPE","X","X","X","X" 59 | "DATA","-","No unit","","" 60 | "DATA","m","metre","","" 61 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 62 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 63 | "DATA","mm","millimetre","","" 64 | "DATA","%","percentage","","" 65 | "DATA","l/min","litres per minute","","" 66 | "DATA","hh:mm:ss","hh:mm:ss","","" 67 | 68 | "GROUP","LOCA" 69 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET","LOCA_CHKG","LOCA_APPG" 70 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","","","" 71 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X","X","X" 72 | "DATA","327-16A","CP+RC","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","RC","AS" 73 | 74 | "GROUP","SAMP" 75 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 76 | "UNIT","","m","","","","m" 77 | "TYPE","ID","2DP","X","PA","ID","2DP" 78 | "DATA","327-16A","15.00","15","U","","15.45" 79 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 80 | 81 | "GROUP","LLPL" 82 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 83 | "UNIT","","m","","","","","m","%","%","","%" 84 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 85 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 86 | "DATA","327-16A","15.00","15","U","","2","15.00","40","20","20","15" 87 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule18-2.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | 8 | "GROUP","TRAN" 9 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 10 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 11 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 12 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","Headings not in order starting from LOCA_CHKG","" 13 | 14 | "GROUP","ABBR" 15 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 16 | "UNIT","","","","","","" 17 | "TYPE","X","X","X","X","X","X" 18 | "DATA","DICT_TYPE","GROUP","Group","","","" 19 | "DATA","DICT_TYPE","HEADING","Heading","","","" 20 | "DATA","DICT_STAT","OTHER","Other Field","","","" 21 | "DATA","DICT_STAT","KEY","Key Field","","","" 22 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 23 | "DATA","SAMP_TYPE","D","Small disturbed sample","","","" 24 | "DATA","ISPT_TYPE","S","Split spoon","","","" 25 | "DATA","LOCA_TYPE","CP","Cable percussion (shell and auger)","","","" 26 | "DATA","LOCA_TYPE","RC","Rotary cored","","","" 27 | 28 | "GROUP","DICT" 29 | "HEADING","DICT_TYPE","DICT_GRP","DICT_HDNG","DICT_STAT","DICT_DTYP","DICT_DESC","DICT_UNIT","DICT_EXMP","DICT_PGRP","DICT_REM","FILE_FSET" 30 | "UNIT","","","","","","","","","","","" 31 | "TYPE","PA","X","X","PA","PT","X","PU","X","X","X","X" 32 | "DATA","HEADING","LOCA","LOCA_APPG","OTHER","X","The person who approved the data for this Location","","","","","" 33 | "DATA","HEADING","LOCA","LOCA_CHKG","OTHER","X","The person who checked the data for this Location","","","","","" 34 | 35 | "GROUP","TYPE" 36 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 37 | "UNIT","","","" 38 | "TYPE","X","X","X" 39 | "DATA","U","Undefined","" 40 | "DATA","X","Text","" 41 | "DATA","ID","Unique identifier","" 42 | "DATA","PA","ABBR pick list","" 43 | "DATA","2DP","Value; required number of decimal places, 2","" 44 | "DATA","DT","Date Time (ISO 8601:2004)","" 45 | "DATA","0DP","Value; required number of decimal places, 0","" 46 | "DATA","1DP","Value; required number of decimal places, 1","" 47 | "DATA","PT","TYPE pick list","" 48 | "DATA","PU","UNIT pick list","" 49 | "DATA","DMS","Degrees:Minutes:Seconds","" 50 | "DATA","T","Elapsed time","" 51 | "DATA","RL","Record link","" 52 | "DATA","XN","Text/Numeric","" 53 | "DATA","2SF","Value; required number of significant figures, 2","" 54 | "DATA","YN","Yes/No","" 55 | 56 | "GROUP","UNIT" 57 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 58 | "UNIT","","","","" 59 | "TYPE","X","X","X","X" 60 | "DATA","-","No unit","","" 61 | "DATA","m","metre","","" 62 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 63 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 64 | "DATA","mm","millimetre","","" 65 | "DATA","%","percentage","","" 66 | "DATA","l/min","litres per minute","","" 67 | "DATA","hh:mm:ss","hh:mm:ss","","" 68 | 69 | "GROUP","LOCA" 70 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET","LOCA_CHKG","LOCA_APPG" 71 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","","","" 72 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X","X","X" 73 | "DATA","327-16A","CP+RC","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","RC","AS" 74 | 75 | "GROUP","SAMP" 76 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 77 | "UNIT","","m","","","","m" 78 | "TYPE","ID","2DP","X","PA","ID","2DP" 79 | "DATA","327-16A","15.00","15","U","","15.45" 80 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 81 | 82 | "GROUP","LLPL" 83 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 84 | "UNIT","","m","","","","","m","%","%","","%" 85 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 86 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 87 | "DATA","327-16A","15.00","15","U","","2","15.00","40","20","20","15" 88 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule18-OK.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | 8 | "GROUP","TRAN" 9 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 10 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 11 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 12 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","No errors","" 13 | 14 | "GROUP","ABBR" 15 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 16 | "UNIT","","","","","","" 17 | "TYPE","X","X","X","X","X","X" 18 | "DATA","DICT_TYPE","GROUP","Group","","","" 19 | "DATA","DICT_TYPE","HEADING","Heading","","","" 20 | "DATA","DICT_STAT","OTHER","Other Field","","","" 21 | "DATA","DICT_STAT","KEY","Key Field","","","" 22 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 23 | "DATA","SAMP_TYPE","D","Small disturbed sample","","","" 24 | "DATA","ISPT_TYPE","S","Split spoon","","","" 25 | "DATA","LOCA_TYPE","CP","Cable percussion (shell and auger)","","","" 26 | "DATA","LOCA_TYPE","RC","Rotary cored","","","" 27 | 28 | "GROUP","DICT" 29 | "HEADING","DICT_TYPE","DICT_GRP","DICT_HDNG","DICT_STAT","DICT_DTYP","DICT_DESC","DICT_UNIT","DICT_EXMP","DICT_PGRP","DICT_REM","FILE_FSET" 30 | "UNIT","","","","","","","","","","","" 31 | "TYPE","PA","X","X","PA","PT","X","PU","X","X","X","X" 32 | "DATA","HEADING","LOCA","LOCA_CHKG","OTHER","X","The person who checked the data for this Location","","","","","" 33 | "DATA","HEADING","LOCA","LOCA_APPG","OTHER","X","The person who approved the data for this Location","","","","","" 34 | 35 | "GROUP","TYPE" 36 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 37 | "UNIT","","","" 38 | "TYPE","X","X","X" 39 | "DATA","U","Undefined","" 40 | "DATA","X","Text","" 41 | "DATA","ID","Unique identifier","" 42 | "DATA","PA","ABBR pick list","" 43 | "DATA","2DP","Value; required number of decimal places, 2","" 44 | "DATA","DT","Date Time (ISO 8601:2004)","" 45 | "DATA","0DP","Value; required number of decimal places, 0","" 46 | "DATA","1DP","Value; required number of decimal places, 1","" 47 | "DATA","PT","TYPE pick list","" 48 | "DATA","PU","UNIT pick list","" 49 | "DATA","DMS","Degrees:Minutes:Seconds","" 50 | "DATA","T","Elapsed time","" 51 | "DATA","RL","Record link","" 52 | "DATA","XN","Text/Numeric","" 53 | "DATA","2SF","Value; required number of significant figures, 2","" 54 | "DATA","YN","Yes/No","" 55 | 56 | "GROUP","UNIT" 57 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 58 | "UNIT","","","","" 59 | "TYPE","X","X","X","X" 60 | "DATA","-","No unit","","" 61 | "DATA","m","metre","","" 62 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 63 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 64 | "DATA","mm","millimetre","","" 65 | "DATA","%","percentage","","" 66 | "DATA","l/min","litres per minute","","" 67 | "DATA","hh:mm:ss","hh:mm:ss","","" 68 | 69 | "GROUP","LOCA" 70 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET","LOCA_CHKG","LOCA_APPG" 71 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","","","" 72 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X","X","X" 73 | "DATA","327-16A","CP+RC","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","RC","AS" 74 | 75 | "GROUP","SAMP" 76 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 77 | "UNIT","","m","","","","m" 78 | "TYPE","ID","2DP","X","PA","ID","2DP" 79 | "DATA","327-16A","15.00","15","U","","15.45" 80 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00" 81 | 82 | "GROUP","LLPL" 83 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 84 | "UNIT","","m","","","","","m","%","%","","%" 85 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 86 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 87 | "DATA","327-16A","15.00","15","U","","2","15.00","40","20","20","15" 88 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule2.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | 17 | "GROUP","TRAN" 18 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 19 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 20 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 21 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","SAMP,No DATA rows in group","" 22 | 23 | "GROUP","TYPE" 24 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 25 | "UNIT","","","" 26 | "TYPE","X","X","X" 27 | "DATA","U","Undefined","" 28 | "DATA","X","Text","" 29 | "DATA","ID","Unique identifier","" 30 | "DATA","PA","ABBR pick list","" 31 | "DATA","2DP","Value; required number of decimal places, 2","" 32 | "DATA","DT","Date Time (ISO 8601:2004)","" 33 | "DATA","0DP","Value; required number of decimal places, 0","" 34 | "DATA","1DP","Value; required number of decimal places, 1","" 35 | "DATA","PT","TYPE pick list","" 36 | "DATA","PU","UNIT pick list","" 37 | "DATA","DMS","Degrees:Minutes:Seconds","" 38 | "DATA","T","Elapsed time","" 39 | "DATA","RL","Record link","" 40 | 41 | "GROUP","UNIT" 42 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 43 | "UNIT","","","","" 44 | "TYPE","X","X","X","X" 45 | "DATA","-","No unit","","" 46 | "DATA","m","metre","","" 47 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 48 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 49 | "DATA","mm","millimetre","","" 50 | "DATA","%","percentage","","" 51 | "DATA","l/min","litres per minute","","" 52 | "DATA","hh:mm:ss","hh:mm:ss","","" 53 | 54 | "GROUP","LOCA" 55 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 56 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 57 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 58 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 59 | 60 | "GROUP","SAMP" 61 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE","SAMP_DTIM","SAMP_UBLO","SAMP_CONT","SAMP_PREP","SAMP_SDIA","SAMP_WDEP","SAMP_RECV","SAMP_TECH","SAMP_MATX","SAMP_TYPC","SAMP_WHO","SAMP_WHY","SAMP_REM","SAMP_DESC","SAMP_DESD","SAMP_LOG","SAMP_COND","SAMP_CLSS","SAMP_BAR","SAMP_TEMP","SAMP_PRES","SAMP_FLOW","SAMP_ETIM","SAMP_DURN","SAMP_CAPT","SAMP_LINK","GEOL_STAT","FILE_FSET" 62 | "UNIT","","m","","","","m","yyyy-mm-ddThh:mm:ss.sss","","","","mm","m","%","","","","","","","","yyyy-mm-dd","","","","","","","l/min","yyyy-mm-ddThh:mm:ss.sss","hh:mm:ss","","","","" 63 | "TYPE","ID","2DP","X","PA","ID","2DP","DT","0DP","X","X","0DP","X","0DP","X","X","X","X","X","X","X","DT","X","X","X","1DP","0DP","1DP","1DP","DT","T","X","X","X","X" 64 | 65 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule2.check: -------------------------------------------------------------------------------- 1 | {"Rule 2": [{"line": "-", "group": "SAMP", "desc": "No DATA rows in group."}]} -------------------------------------------------------------------------------- /tests/test_files/4.1-rule2b1.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "TYPE","X","X","X","X","X","X" 10 | "DATA","DICT_TYPE","GROUP","Group","","","" 11 | "DATA","DICT_TYPE","HEADING","Heading","","","" 12 | "DATA","DICT_STAT","OTHER","Other Field","","","" 13 | "DATA","DICT_STAT","KEY","Key Field","","","" 14 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 15 | 16 | "GROUP","TRAN" 17 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 18 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 19 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 20 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","ABBR,UNIT row missing from group","" 21 | 22 | "GROUP","TYPE" 23 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 24 | "UNIT","","","" 25 | "TYPE","X","X","X" 26 | "DATA","U","Undefined","" 27 | "DATA","X","Text","" 28 | "DATA","ID","Unique identifier","" 29 | "DATA","PA","ABBR pick list","" 30 | "DATA","2DP","Value; required number of decimal places, 2","" 31 | "DATA","DT","Date Time (ISO 8601:2004)","" 32 | "DATA","0DP","Value; required number of decimal places, 0","" 33 | "DATA","1DP","Value; required number of decimal places, 1","" 34 | "DATA","PT","TYPE pick list","" 35 | "DATA","PU","UNIT pick list","" 36 | "DATA","DMS","Degrees:Minutes:Seconds","" 37 | "DATA","T","Elapsed time","" 38 | "DATA","RL","Record link","" 39 | 40 | "GROUP","UNIT" 41 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 42 | "UNIT","","","","" 43 | "TYPE","X","X","X","X" 44 | "DATA","-","No unit","","" 45 | "DATA","m","metre","","" 46 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 47 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 48 | "DATA","mm","millimetre","","" 49 | "DATA","%","percentage","","" 50 | "DATA","l/min","litres per minute","","" 51 | "DATA","hh:mm:ss","hh:mm:ss","","" 52 | 53 | "GROUP","LOCA" 54 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 55 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 56 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 57 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 58 | 59 | 60 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule2b1.check: -------------------------------------------------------------------------------- 1 | {"Rule 2b": [{"line": "-", "group": "ABBR", "desc": "UNIT row missing from group."}, {"line": "-", "group": "ABBR", "desc": "TYPE row is misplaced. It should be immediately below the UNIT row."}]} -------------------------------------------------------------------------------- /tests/test_files/4.1-rule2b2.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "DATA","DICT_TYPE","GROUP","Group","","","" 10 | "DATA","DICT_TYPE","HEADING","Heading","","","" 11 | "DATA","DICT_STAT","OTHER","Other Field","","","" 12 | "DATA","DICT_STAT","KEY","Key Field","","","" 13 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 14 | 15 | "GROUP","TRAN" 16 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 17 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 18 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 19 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","ABBR,UNIT row missing from group,TYPE row missing from group","" 20 | 21 | "GROUP","TYPE" 22 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 23 | "UNIT","","","" 24 | "TYPE","X","X","X" 25 | "DATA","U","Undefined","" 26 | "DATA","X","Text","" 27 | "DATA","ID","Unique identifier","" 28 | "DATA","PA","ABBR pick list","" 29 | "DATA","2DP","Value; required number of decimal places, 2","" 30 | "DATA","DT","Date Time (ISO 8601:2004)","" 31 | "DATA","0DP","Value; required number of decimal places, 0","" 32 | "DATA","1DP","Value; required number of decimal places, 1","" 33 | "DATA","PT","TYPE pick list","" 34 | "DATA","PU","UNIT pick list","" 35 | "DATA","DMS","Degrees:Minutes:Seconds","" 36 | "DATA","T","Elapsed time","" 37 | "DATA","RL","Record link","" 38 | 39 | "GROUP","UNIT" 40 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 41 | "UNIT","","","","" 42 | "TYPE","X","X","X","X" 43 | "DATA","-","No unit","","" 44 | "DATA","m","metre","","" 45 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 46 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 47 | "DATA","mm","millimetre","","" 48 | "DATA","%","percentage","","" 49 | "DATA","l/min","litres per minute","","" 50 | "DATA","hh:mm:ss","hh:mm:ss","","" 51 | 52 | "GROUP","LOCA" 53 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 54 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 55 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 56 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 57 | 58 | 59 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule2b2.check: -------------------------------------------------------------------------------- 1 | {"Rule 2b": [{"line": "-", "group": "ABBR", "desc": "UNIT row missing from group."}, {"line": "-", "group": "ABBR", "desc": "TYPE row missing from group."}]} -------------------------------------------------------------------------------- /tests/test_files/4.1-rule2b3.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "DATA","DICT_TYPE","GROUP","Group","","","" 11 | "DATA","DICT_TYPE","HEADING","Heading","","","" 12 | "DATA","DICT_STAT","OTHER","Other Field","","","" 13 | "DATA","DICT_STAT","KEY","Key Field","","","" 14 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 15 | 16 | "GROUP","TRAN" 17 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 18 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 19 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 20 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","ABBR,TYPE row missing from group","" 21 | 22 | "GROUP","TYPE" 23 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 24 | "UNIT","","","" 25 | "TYPE","X","X","X" 26 | "DATA","U","Undefined","" 27 | "DATA","X","Text","" 28 | "DATA","ID","Unique identifier","" 29 | "DATA","PA","ABBR pick list","" 30 | "DATA","2DP","Value; required number of decimal places, 2","" 31 | "DATA","DT","Date Time (ISO 8601:2004)","" 32 | "DATA","0DP","Value; required number of decimal places, 0","" 33 | "DATA","1DP","Value; required number of decimal places, 1","" 34 | "DATA","PT","TYPE pick list","" 35 | "DATA","PU","UNIT pick list","" 36 | "DATA","DMS","Degrees:Minutes:Seconds","" 37 | "DATA","T","Elapsed time","" 38 | "DATA","RL","Record link","" 39 | 40 | "GROUP","UNIT" 41 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 42 | "UNIT","","","","" 43 | "TYPE","X","X","X","X" 44 | "DATA","-","No unit","","" 45 | "DATA","m","metre","","" 46 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 47 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 48 | "DATA","mm","millimetre","","" 49 | "DATA","%","percentage","","" 50 | "DATA","l/min","litres per minute","","" 51 | "DATA","hh:mm:ss","hh:mm:ss","","" 52 | 53 | "GROUP","LOCA" 54 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 55 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 56 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 57 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 58 | 59 | 60 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule2b3.check: -------------------------------------------------------------------------------- 1 | {"Rule 2b": [{"line": "-", "group": "ABBR", "desc": "TYPE row missing from group."}]} -------------------------------------------------------------------------------- /tests/test_files/4.1-rule2b4.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "TYPE","X","X","X","X","X","X" 10 | "UNIT","","","","","","" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | 17 | "GROUP","TRAN" 18 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 19 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 20 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 21 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","UNIT row is misplaced,TYPE row is misplaced","" 22 | 23 | "GROUP","TYPE" 24 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 25 | "UNIT","","","" 26 | "TYPE","X","X","X" 27 | "DATA","U","Undefined","" 28 | "DATA","X","Text","" 29 | "DATA","ID","Unique identifier","" 30 | "DATA","PA","ABBR pick list","" 31 | "DATA","2DP","Value; required number of decimal places, 2","" 32 | "DATA","DT","Date Time (ISO 8601:2004)","" 33 | "DATA","0DP","Value; required number of decimal places, 0","" 34 | "DATA","1DP","Value; required number of decimal places, 1","" 35 | "DATA","PT","TYPE pick list","" 36 | "DATA","PU","UNIT pick list","" 37 | "DATA","DMS","Degrees:Minutes:Seconds","" 38 | "DATA","T","Elapsed time","" 39 | "DATA","RL","Record link","" 40 | 41 | "GROUP","UNIT" 42 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 43 | "UNIT","","","","" 44 | "TYPE","X","X","X","X" 45 | "DATA","-","No unit","","" 46 | "DATA","m","metre","","" 47 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 48 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 49 | "DATA","mm","millimetre","","" 50 | "DATA","%","percentage","","" 51 | "DATA","l/min","litres per minute","","" 52 | "DATA","hh:mm:ss","hh:mm:ss","","" 53 | 54 | "GROUP","LOCA" 55 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 56 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 57 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 58 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 59 | 60 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule2b4.check: -------------------------------------------------------------------------------- 1 | {"Rule 2b": [{"line": "-", "group": "ABBR", "desc": "UNIT row is misplaced. It should be immediately below the HEADING row."}, {"line": "-", "group": "ABBR", "desc": "TYPE row is misplaced. It should be immediately below the UNIT row."}]} -------------------------------------------------------------------------------- /tests/test_files/4.1-rule3.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | 17 | "GROUP","TRAN" 18 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 19 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 20 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 21 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","LOCA,Does not start with a valid data descriptor","" 22 | 23 | "GROUP","TYPE" 24 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 25 | "UNIT","","","" 26 | "TYPE","X","X","X" 27 | "DATA","U","Undefined","" 28 | "DATA","X","Text","" 29 | "DATA","ID","Unique identifier","" 30 | "DATA","PA","ABBR pick list","" 31 | "DATA","2DP","Value; required number of decimal places, 2","" 32 | "DATA","DT","Date Time (ISO 8601:2004)","" 33 | "DATA","0DP","Value; required number of decimal places, 0","" 34 | "DATA","1DP","Value; required number of decimal places, 1","" 35 | "DATA","PT","TYPE pick list","" 36 | "DATA","PU","UNIT pick list","" 37 | "DATA","DMS","Degrees:Minutes:Seconds","" 38 | "DATA","T","Elapsed time","" 39 | "DATA","RL","Record link","" 40 | 41 | "GROUP","UNIT" 42 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 43 | "UNIT","","","","" 44 | "TYPE","X","X","X","X" 45 | "DATA","-","No unit","","" 46 | "DATA","m","metre","","" 47 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 48 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 49 | "DATA","mm","millimetre","","" 50 | "DATA","%","percentage","","" 51 | "DATA","l/min","litres per minute","","" 52 | "DATA","hh:mm:ss","hh:mm:ss","","" 53 | 54 | "GROUP","LOCA" 55 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 56 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 57 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 58 | "","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 59 | 60 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule3.check: -------------------------------------------------------------------------------- 1 | {"Rule 3": [{"line": 58, "group": "", "desc": "Does not start with a valid data descriptor."}], "Rule 2": [{"line": "-", "group": "LOCA", "desc": "No DATA rows in group."}]} -------------------------------------------------------------------------------- /tests/test_files/4.1-rule5-1.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME "Gas Works" Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | 17 | "GROUP","TRAN" 18 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 19 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 20 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 21 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","Line 5,Contains quotes within a data field. All such quotes should be enclosed by a second quote.","" 22 | 23 | "GROUP","TYPE" 24 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 25 | "UNIT","","","" 26 | "TYPE","X","X","X" 27 | "DATA","U","Undefined","" 28 | "DATA","X","Text","" 29 | "DATA","ID","Unique identifier","" 30 | "DATA","PA","ABBR pick list","" 31 | "DATA","2DP","Value; required number of decimal places, 2","" 32 | "DATA","DT","Date Time (ISO 8601:2004)","" 33 | "DATA","0DP","Value; required number of decimal places, 0","" 34 | "DATA","1DP","Value; required number of decimal places, 1","" 35 | "DATA","PT","TYPE pick list","" 36 | "DATA","PU","UNIT pick list","" 37 | "DATA","DMS","Degrees:Minutes:Seconds","" 38 | "DATA","T","Elapsed time","" 39 | "DATA","RL","Record link","" 40 | 41 | "GROUP","UNIT" 42 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 43 | "UNIT","","","","" 44 | "TYPE","X","X","X","X" 45 | "DATA","-","No unit","","" 46 | "DATA","m","metre","","" 47 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 48 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 49 | "DATA","mm","millimetre","","" 50 | "DATA","%","percentage","","" 51 | "DATA","l/min","litres per minute","","" 52 | "DATA","hh:mm:ss","hh:mm:ss","","" 53 | 54 | "GROUP","LOCA" 55 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 56 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 57 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 58 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 59 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule5-1.check: -------------------------------------------------------------------------------- 1 | {"Rule 5": [{"line": 5, "group": "", "desc": "Contains quotes within a data field. All such quotes should be enclosed by a second quote."}]} -------------------------------------------------------------------------------- /tests/test_files/4.1-rule5.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME ""Gas Works"" Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | 17 | "GROUP","TRAN" 18 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 19 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 20 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 21 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","No errors","" 22 | 23 | "GROUP","TYPE" 24 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 25 | "UNIT","","","" 26 | "TYPE","X","X","X" 27 | "DATA","U","Undefined","" 28 | "DATA","X","Text","" 29 | "DATA","ID","Unique identifier","" 30 | "DATA","PA","ABBR pick list","" 31 | "DATA","2DP","Value; required number of decimal places, 2","" 32 | "DATA","DT","Date Time (ISO 8601:2004)","" 33 | "DATA","0DP","Value; required number of decimal places, 0","" 34 | "DATA","1DP","Value; required number of decimal places, 1","" 35 | "DATA","PT","TYPE pick list","" 36 | "DATA","PU","UNIT pick list","" 37 | "DATA","DMS","Degrees:Minutes:Seconds","" 38 | "DATA","T","Elapsed time","" 39 | "DATA","RL","Record link","" 40 | 41 | "GROUP","UNIT" 42 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 43 | "UNIT","","","","" 44 | "TYPE","X","X","X","X" 45 | "DATA","-","No unit","","" 46 | "DATA","m","metre","","" 47 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 48 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 49 | "DATA","mm","millimetre","","" 50 | "DATA","%","percentage","","" 51 | "DATA","l/min","litres per minute","","" 52 | "DATA","hh:mm:ss","hh:mm:ss","","" 53 | 54 | "GROUP","LOCA" 55 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 56 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 57 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 58 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 59 | 60 | 61 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule5.check: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /tests/test_files/4.1-rule6_1.ags: -------------------------------------------------------------------------------- 1 | GROUP PROJ 2 | HEADING PROJ_ID PROJ_NAME PROJ_LOC PROJ_CLNT PROJ_CONT PROJ_ENG PROJ_MEMO FILE_FSET 3 | UNIT 4 | TYPE X X X X X X X X 5 | DATA 121415 ACME Gas Works Redevelopment Anytown ACME Enterprises ACME Drilling Ltd 6 | 7 | 8 | GROUP TRAN 9 | HEADING TRAN_ISNO TRAN_DATE TRAN_PROD TRAN_STAT TRAN_DESC TRAN_AGS TRAN_RECV TRAN_DLIM TRAN_RCON TRAN_REM FILE_FSET 10 | UNIT yyyy-mm-dd 11 | TYPE X DT X X X X X X X X X 12 | DATA 1 2021-01-18 ACME Drilling Ltd Preliminary Draft Logs only 4.1 ACME Consulting | + No errors 13 | 14 | GROUP ABBR 15 | HEADING ABBR_HDNG ABBR_CODE ABBR_DESC ABBR_LIST ABBR_REM FILE_FSET 16 | UNIT 17 | TYPE X X X X X X 18 | DATA DICT_TYPE GROUP Flag to indicate definition is a GROUP 19 | DATA DICT_TYPE HEADING Flag to indicate definition is a HEADING 20 | DATA DICT_STAT OTHER Other Field 21 | DATA DICT_STAT KEY Key Field 22 | DATA SAMP_TYPE U Undisturbed sample - open drive 23 | DATA SAMP_TYPE D Small disturbed sample 24 | DATA ISPT_TYPE S Split spoon 25 | DATA LOCA_TYPE CP Cable percussion (shell and auger) 26 | DATA LOCA_TYPE RC Rotary cored 27 | 28 | GROUP DICT 29 | HEADING DICT_TYPE DICT_GRP DICT_HDNG DICT_STAT DICT_DTYP DICT_DESC DICT_UNIT DICT_EXMP DICT_PGRP DICT_REM FILE_FSET 30 | UNIT 31 | TYPE PA X X PA PT X PU X X X X 32 | DATA HEADING LOCA LOCA_CHKG OTHER X The person who checked the data for this Location 33 | DATA HEADING LOCA LOCA_APPG OTHER X The person who approved the data for this Location 34 | 35 | GROUP FILE 36 | HEADING FILE_FSET FILE_NAME FILE_DESC FILE_TYPE FILE_PROG FILE_DOCT FILE_DATE FILE_REM 37 | UNIT yyyy-mm-dd 38 | TYPE X X X X X X DT X 39 | DATA 327-16A Report.pdf Report pdf 2021-01-31 40 | 41 | GROUP TYPE 42 | HEADING TYPE_TYPE TYPE_DESC FILE_FSET 43 | UNIT 44 | TYPE X X X 45 | DATA U Undefined 46 | DATA X Text 47 | DATA ID Unique identifier 48 | DATA PA ABBR pick list 49 | DATA 2DP Value; required number of decimal places, 2 50 | DATA DT Date Time (ISO 8601:2004) 51 | DATA 0DP Value; required number of decimal places, 0 52 | DATA 1DP Value; required number of decimal places, 1 53 | DATA PT TYPE pick list 54 | DATA PU UNIT pick list 55 | DATA DMS Degrees:Minutes:Seconds 56 | DATA T Elapsed time 57 | DATA RL Record link 58 | DATA XN Text/Numeric 59 | DATA 2SF Value; required number of significant figures, 2 60 | DATA YN Yes/No 61 | 62 | GROUP UNIT 63 | HEADING UNIT_UNIT UNIT_DESC UNIT_REM FILE_FSET 64 | UNIT 65 | TYPE X X X X 66 | DATA - No unit 67 | DATA m metre 68 | DATA yyyy-mm-dd Date (ISO8601) 69 | DATA yyyy-mm-ddThh:mm:ss.sss Date Time (ISO8601) 70 | DATA mm millimetre 71 | DATA % percentage 72 | DATA l/min litres per minute 73 | DATA hh:mm:ss hh:mm:ss 74 | 75 | GROUP LOCA 76 | HEADING LOCA_ID LOCA_TYPE LOCA_STAT LOCA_NATE LOCA_NATN LOCA_GREF LOCA_GL LOCA_REM LOCA_FDEP LOCA_STAR LOCA_PURP LOCA_TERM LOCA_ENDD LOCA_LETT LOCA_LOCX LOCA_LOCY LOCA_LOCZ LOCA_LREF LOCA_DATM LOCA_ETRV LOCA_NTRV LOCA_LTRV LOCA_XTRL LOCA_YTRL LOCA_ZTRL LOCA_LAT LOCA_LON LOCA_ELAT LOCA_ELON LOCA_LLZ LOCA_LOCM LOCA_LOCA LOCA_CLST LOCA_ALID LOCA_OFFS LOCA_CNGE LOCA_TRAN FILE_FSET LOCA_CHKG LOCA_APPG 77 | UNIT m m m m yyyy-mm-dd yyyy-mm-dd m m m m m m m m m 78 | TYPE ID PA PA 2DP 2DP PA 2DP X 2DP DT X X DT X 2DP 2DP 2DP X X 2DP 2DP 2DP 2DP 2DP 2DP DMS DMS DMS DMS X X X X X 2DP X X X X X 79 | DATA 327-16A CP+RC 523145.00 178456.12 327-16A RC AS 80 | 81 | GROUP SAMP 82 | HEADING LOCA_ID SAMP_TOP SAMP_REF SAMP_TYPE SAMP_ID SAMP_BASE 83 | UNIT m m 84 | TYPE ID 2DP X PA ID 2DP 85 | DATA 327-16A 15.00 15 U 15.45 86 | DATA 327-16A 24.55 24 U ABC121415010 25.00 87 | 88 | GROUP LLPL 89 | HEADING LOCA_ID SAMP_TOP SAMP_REF SAMP_TYPE SAMP_ID SPEC_REF SPEC_DPTH LLPL_LL LLPL_PL LLPL_PI LLPL_425 90 | UNIT m m % % % 91 | TYPE ID 2DP X PA ID X 2DP 2SF XN 2SF 2SF 92 | DATA 327-16A 15.00 15 U 1 15.00 45 25 20 15 93 | DATA 327-16A 15.00 15 U 2 15.00 40 20 20 15 94 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule7-1.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","FILE_FSET","PROJ_MEMO" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_REM","ABBR_LIST","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | 17 | "GROUP","TRAN" 18 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 19 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 20 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 21 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","Headings not in order starting from FILE_FSET. Expected order: ...PROJ_MEMO|FILE_FSET","" 22 | 23 | "GROUP","TYPE" 24 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 25 | "UNIT","","","" 26 | "TYPE","X","X","X" 27 | "DATA","U","Undefined","" 28 | "DATA","X","Text","" 29 | "DATA","ID","Unique identifier","" 30 | "DATA","PA","ABBR pick list","" 31 | "DATA","2DP","Value; required number of decimal places, 2","" 32 | "DATA","DT","Date Time (ISO 8601:2004)","" 33 | "DATA","0DP","Value; required number of decimal places, 0","" 34 | "DATA","1DP","Value; required number of decimal places, 1","" 35 | "DATA","PT","TYPE pick list","" 36 | "DATA","PU","UNIT pick list","" 37 | "DATA","DMS","Degrees:Minutes:Seconds","" 38 | "DATA","T","Elapsed time","" 39 | "DATA","RL","Record link","" 40 | 41 | "GROUP","UNIT" 42 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 43 | "UNIT","","","","" 44 | "TYPE","X","X","X","X" 45 | "DATA","-","No unit","","" 46 | "DATA","m","metre","","" 47 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 48 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 49 | "DATA","mm","millimetre","","" 50 | "DATA","%","percentage","","" 51 | "DATA","l/min","litres per minute","","" 52 | "DATA","hh:mm:ss","hh:mm:ss","","" 53 | 54 | "GROUP","LOCA" 55 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 56 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 57 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 58 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 59 | 60 | 61 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule7-1.check: -------------------------------------------------------------------------------- 1 | {"Rule 7": [{"line": "2", "group": "PROJ", "desc": "Headings not in order starting from FILE_FSET. Expected order: ...PROJ_MEMO|FILE_FSET"}]} -------------------------------------------------------------------------------- /tests/test_files/4.1-rule8-1.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT" 3 | "UNIT","","","","","" 4 | "TYPE","ID","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC" 9 | "UNIT","","","" 10 | "TYPE","X","X","X" 11 | "DATA","DICT_DTYP","X","Text" 12 | "DATA","DICT_DTYP","0DP","Value; required number of decimal places, 0" 13 | "DATA","DICT_TYPE","GROUP","Group" 14 | "DATA","DICT_TYPE","HEADING","Heading" 15 | "DATA","DICT_STAT","OTHER","Other Field" 16 | "DATA","DICT_STAT","KEY","Key Field" 17 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive" 18 | 19 | "GROUP","DICT" 20 | "HEADING","DICT_TYPE","DICT_GRP","DICT_HDNG","DICT_STAT","DICT_DTYP","DICT_DESC","DICT_UNIT","DICT_EXMP","DICT_PGRP","DICT_REM","FILE_FSET" 21 | "UNIT","","","","","","","","","","","" 22 | "TYPE","PA","X","X","PA","PT","X","PU","X","X","X","X" 23 | "DATA","HEADING","PROJ","PROJ_OFFC","OTHER","X","Undefined","","","","","" 24 | "DATA","HEADING","SAMP","SAMP_RECL","OTHER","0DP","SampleRecoveryLength","mm","","","","" 25 | 26 | "GROUP","TRAN" 27 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM" 28 | "UNIT","","yyyy-mm-dd","","","","","","","","" 29 | "TYPE","X","DT","X","X","X","X","X","X","X","X" 30 | "DATA","1","2021-01-24","ACME Drilling Ltd","Internal","Draft Logs only","4.1","ACME Consulting","|","+","Some entries in LOCA_NATE not of data type 2DP" 31 | 32 | "GROUP","TYPE" 33 | "HEADING","TYPE_TYPE","TYPE_DESC" 34 | "UNIT","","" 35 | "TYPE","X","X" 36 | "DATA","U","Undefined" 37 | "DATA","X","Text" 38 | "DATA","ID","Unique identifier" 39 | "DATA","PA","ABBR pick list" 40 | "DATA","2DP","Value; required number of decimal places, 2" 41 | "DATA","DT","Date Time (ISO 8601:2004)" 42 | "DATA","0DP","Value; required number of decimal places, 0" 43 | "DATA","1DP","Value; required number of decimal places, 1" 44 | "DATA","XN","Text/Numeric" 45 | "DATA","PT","TYPE pick list" 46 | "DATA","PU","UNIT pick list" 47 | "DATA","2SF","Value; required number of significant figures, 2" 48 | "DATA","DMS","Degrees:Minutes:Seconds" 49 | "DATA","T","Elapsed time" 50 | "DATA","RL","Record link" 51 | 52 | "GROUP","UNIT" 53 | "HEADING","UNIT_UNIT","UNIT_DESC" 54 | "UNIT","","" 55 | "TYPE","X","X" 56 | "DATA","mm","millimetre" 57 | "DATA","-","No unit" 58 | "DATA","m","metre" 59 | "DATA","yyyy-mm-dd","Date (ISO8601)" 60 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)" 61 | "DATA","%","percentage" 62 | "DATA","l/min","litres per minute" 63 | "DATA","hh:mm:ss","hh:mm:ss" 64 | 65 | "GROUP","LLPL" 66 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 67 | "UNIT","","m","","","","","m","%","%","","%" 68 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 69 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 70 | 71 | "GROUP","LOCA" 72 | "HEADING","LOCA_ID","LOCA_NATE","LOCA_NATN" 73 | "UNIT","","m","m" 74 | "TYPE","ID","2DP","2DP" 75 | "DATA","327-16A","523145.00","-178456.12" 76 | "DATA","327-16B","523145.010","178456.12" 77 | "DATA","327-16C","523145.0","178456.12" 78 | 79 | "GROUP","SAMP" 80 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE","SAMP_RECL" 81 | "UNIT","","m","","","","m","mm" 82 | "TYPE","ID","2DP","X","PA","ID","2DP","0DP" 83 | "DATA","327-16A","15.00","15","U","","15.45","" 84 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00","" 85 | 86 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule8-2.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT" 3 | "UNIT","","","","","" 4 | "TYPE","ID","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC" 9 | "UNIT","","","" 10 | "TYPE","X","X","X" 11 | "DATA","DICT_DTYP","X","Text" 12 | "DATA","DICT_DTYP","0DP","Value; required number of decimal places, 0" 13 | "DATA","DICT_TYPE","GROUP","Group" 14 | "DATA","DICT_TYPE","HEADING","Heading" 15 | "DATA","DICT_STAT","OTHER","Other Field" 16 | "DATA","DICT_STAT","KEY","Key Field" 17 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive" 18 | 19 | "GROUP","DICT" 20 | "HEADING","DICT_TYPE","DICT_GRP","DICT_HDNG","DICT_STAT","DICT_DTYP","DICT_DESC","DICT_UNIT","DICT_EXMP","DICT_PGRP","DICT_REM","FILE_FSET" 21 | "UNIT","","","","","","","","","","","" 22 | "TYPE","PA","X","X","PA","PT","X","PU","X","X","X","X" 23 | "DATA","HEADING","PROJ","PROJ_OFFC","OTHER","X","Undefined","","","","","" 24 | "DATA","HEADING","SAMP","SAMP_RECL","OTHER","0DP","SampleRecoveryLength","mm","","","","" 25 | 26 | "GROUP","TRAN" 27 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM" 28 | "UNIT","","yyyy-mm-dd","","","","","","","","" 29 | "TYPE","X","DT","X","X","X","X","X","X","X","X" 30 | "DATA","1","2021-01-24","ACME Drilling Ltd","Internal","Draft Logs only","4.1","ACME Consulting","|","+","Some entries in SAMP not of data type 2SCI" 31 | 32 | "GROUP","TYPE" 33 | "HEADING","TYPE_TYPE","TYPE_DESC" 34 | "UNIT","","" 35 | "TYPE","X","X" 36 | "DATA","U","Undefined" 37 | "DATA","X","Text" 38 | "DATA","ID","Unique identifier" 39 | "DATA","PA","ABBR pick list" 40 | "DATA","2DP","Value; required number of decimal places, 2" 41 | "DATA","DT","Date Time (ISO 8601:2004)" 42 | "DATA","0DP","Value; required number of decimal places, 0" 43 | "DATA","1DP","Value; required number of decimal places, 1" 44 | "DATA","XN","Text/Numeric" 45 | "DATA","PT","TYPE pick list" 46 | "DATA","PU","UNIT pick list" 47 | "DATA","2SF","Value; required number of significant figures, 2" 48 | "DATA","DMS","Degrees:Minutes:Seconds" 49 | "DATA","T","Elapsed time" 50 | "DATA","RL","Record link" 51 | 52 | "GROUP","UNIT" 53 | "HEADING","UNIT_UNIT","UNIT_DESC" 54 | "UNIT","","" 55 | "TYPE","X","X" 56 | "DATA","mm","millimetre" 57 | "DATA","-","No unit" 58 | "DATA","m","metre" 59 | "DATA","yyyy-mm-dd","Date (ISO8601)" 60 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)" 61 | "DATA","%","percentage" 62 | "DATA","l/min","litres per minute" 63 | "DATA","hh:mm:ss","hh:mm:ss" 64 | 65 | "GROUP","LLPL" 66 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 67 | "UNIT","","m","","","","","m","%","%","","%" 68 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 69 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 70 | 71 | "GROUP","LOCA" 72 | "HEADING","LOCA_ID","LOCA_NATE","LOCA_NATN" 73 | "UNIT","","m","m" 74 | "TYPE","ID","2DP","2DP" 75 | "DATA","327-16A","523145.00","178456.12" 76 | 77 | "GROUP","SAMP" 78 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE","SAMP_RECL" 79 | "UNIT","","m","","","","m","mm" 80 | "TYPE","ID","2SCI","X","PA","ID","2DP","0DP" 81 | "DATA","327-16A","1.50e1","15","U","","15.45","" 82 | "DATA","327-16A","2.455e1","24","U","ABC121415010","25.00","" 83 | "DATA","327-16A","30.45e1","24","U","ABC121415010","25.00","" 84 | "DATA","327-16A","3.4e1","24","U","ABC121415010","25.00","" 85 | "DATA","327-16A","1.50e-1","15","U","","15.45","" 86 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule8-3.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT" 3 | "UNIT","","","","","" 4 | "TYPE","ID","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC" 9 | "UNIT","","","" 10 | "TYPE","X","X","X" 11 | "DATA","DICT_DTYP","X","Text" 12 | "DATA","DICT_DTYP","0DP","Value; required number of decimal places, 0" 13 | "DATA","DICT_TYPE","GROUP","Group" 14 | "DATA","DICT_TYPE","HEADING","Heading" 15 | "DATA","DICT_STAT","OTHER","Other Field" 16 | "DATA","DICT_STAT","KEY","Key Field" 17 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive" 18 | 19 | "GROUP","DICT" 20 | "HEADING","DICT_TYPE","DICT_GRP","DICT_HDNG","DICT_STAT","DICT_DTYP","DICT_DESC","DICT_UNIT","DICT_EXMP","DICT_PGRP","DICT_REM","FILE_FSET" 21 | "UNIT","","","","","","","","","","","" 22 | "TYPE","PA","X","X","PA","PT","X","PU","X","X","X","X" 23 | "DATA","HEADING","PROJ","PROJ_OFFC","OTHER","X","Undefined","","","","","" 24 | "DATA","HEADING","SAMP","SAMP_RECL","OTHER","0DP","SampleRecoveryLength","mm","","","","" 25 | 26 | "GROUP","TRAN" 27 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM" 28 | "UNIT","","yyyy-mm-dd","","","","","","","","" 29 | "TYPE","X","DT","X","X","X","X","X","X","X","X" 30 | "DATA","1","2021-01-24","ACME Drilling Ltd","Internal","Draft Logs only","4.1","ACME Consulting","|","+","Some entries in LLPL not of data type 2SF" 31 | 32 | "GROUP","TYPE" 33 | "HEADING","TYPE_TYPE","TYPE_DESC" 34 | "UNIT","","" 35 | "TYPE","X","X" 36 | "DATA","U","Undefined" 37 | "DATA","X","Text" 38 | "DATA","ID","Unique identifier" 39 | "DATA","PA","ABBR pick list" 40 | "DATA","2DP","Value; required number of decimal places, 2" 41 | "DATA","DT","Date Time (ISO 8601:2004)" 42 | "DATA","0DP","Value; required number of decimal places, 0" 43 | "DATA","1DP","Value; required number of decimal places, 1" 44 | "DATA","XN","Text/Numeric" 45 | "DATA","PT","TYPE pick list" 46 | "DATA","PU","UNIT pick list" 47 | "DATA","2SF","Value; required number of significant figures, 2" 48 | "DATA","DMS","Degrees:Minutes:Seconds" 49 | "DATA","T","Elapsed time" 50 | "DATA","RL","Record link" 51 | 52 | "GROUP","UNIT" 53 | "HEADING","UNIT_UNIT","UNIT_DESC" 54 | "UNIT","","" 55 | "TYPE","X","X" 56 | "DATA","mm","millimetre" 57 | "DATA","-","No unit" 58 | "DATA","m","metre" 59 | "DATA","yyyy-mm-dd","Date (ISO8601)" 60 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)" 61 | "DATA","%","percentage" 62 | "DATA","l/min","litres per minute" 63 | "DATA","hh:mm:ss","hh:mm:ss" 64 | 65 | "GROUP","LLPL" 66 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 67 | "UNIT","","m","","","","","m","%","%","","%" 68 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 69 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 70 | "DATA","327-16A","15.10","15","U","","1","15.00","45.0","25","20","15" 71 | "DATA","327-16A","15.20","15","U","","1","15.00","101","25","76","15" 72 | "DATA","327-16A","15.30","15","U","","1","15.00","0.45","0.25","0.20","15" 73 | "DATA","327-16A","15.35","15","U","","1","15.00","0.45","0.25","0.2","15" 74 | "DATA","327-16A","15.40","15","U","","1","15.00","0.045","0.025","0.020","15" 75 | "DATA","327-16A","15.45","15","U","","1","15.00","45","45","0","15" 76 | 77 | "GROUP","LOCA" 78 | "HEADING","LOCA_ID","LOCA_NATE","LOCA_NATN" 79 | "UNIT","","m","m" 80 | "TYPE","ID","2DP","2DP" 81 | "DATA","327-16A","523145.00","178456.12" 82 | 83 | "GROUP","SAMP" 84 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE","SAMP_RECL" 85 | "UNIT","","m","","","","m","mm" 86 | "TYPE","ID","2DP","X","PA","ID","2DP","0DP" 87 | "DATA","327-16A","15.00","15","U","","15.45","" 88 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00","" 89 | 90 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule8-5.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT" 3 | "UNIT","","","","","" 4 | "TYPE","ID","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC" 9 | "UNIT","","","" 10 | "TYPE","X","X","X" 11 | "DATA","DICT_DTYP","X","Text" 12 | "DATA","DICT_DTYP","0DP","Value; required number of decimal places, 0" 13 | "DATA","DICT_TYPE","GROUP","Group" 14 | "DATA","DICT_TYPE","HEADING","Heading" 15 | "DATA","DICT_STAT","OTHER","Other Field" 16 | "DATA","DICT_STAT","KEY","Key Field" 17 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive" 18 | 19 | "GROUP","DICT" 20 | "HEADING","DICT_TYPE","DICT_GRP","DICT_HDNG","DICT_STAT","DICT_DTYP","DICT_DESC","DICT_UNIT","DICT_EXMP","DICT_PGRP","DICT_REM","FILE_FSET" 21 | "UNIT","","","","","","","","","","","" 22 | "TYPE","PA","X","X","PA","PT","X","PU","X","X","X","X" 23 | "DATA","HEADING","PROJ","PROJ_OFFC","OTHER","X","Undefined","","","","","" 24 | "DATA","HEADING","SAMP","SAMP_RECL","OTHER","0DP","SampleRecoveryLength","mm","","","","" 25 | 26 | "GROUP","TRAN" 27 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM" 28 | "UNIT","","yyyy-mm-dd","","","","","","","","" 29 | "TYPE","X","DT","X","X","X","X","X","X","X","X" 30 | "DATA","1","2021-01-24","ACME Drilling Ltd","Internal","Draft Logs only","4.1","ACME Consulting","|","+","Invalid entries in SAMP_RECL (U) and ISPT_ROCK (YN)" 31 | 32 | "GROUP","TYPE" 33 | "HEADING","TYPE_TYPE","TYPE_DESC" 34 | "UNIT","","" 35 | "TYPE","X","X" 36 | "DATA","U","Undefined" 37 | "DATA","X","Text" 38 | "DATA","ID","Unique identifier" 39 | "DATA","PA","ABBR pick list" 40 | "DATA","2DP","Value; required number of decimal places, 2" 41 | "DATA","DT","Date Time (ISO 8601:2004)" 42 | "DATA","0DP","Value; required number of decimal places, 0" 43 | "DATA","1DP","Value; required number of decimal places, 1" 44 | "DATA","XN","Text/Numeric" 45 | "DATA","PT","TYPE pick list" 46 | "DATA","PU","UNIT pick list" 47 | "DATA","2SF","Value; required number of significant figures, 2" 48 | "DATA","DMS","Degrees:Minutes:Seconds" 49 | "DATA","T","Elapsed time" 50 | "DATA","RL","Record link" 51 | 52 | "GROUP","UNIT" 53 | "HEADING","UNIT_UNIT","UNIT_DESC" 54 | "UNIT","","" 55 | "TYPE","X","X" 56 | "DATA","mm","millimetre" 57 | "DATA","-","No unit" 58 | "DATA","m","metre" 59 | "DATA","yyyy-mm-dd","Date (ISO8601)" 60 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)" 61 | "DATA","%","percentage" 62 | "DATA","l/min","litres per minute" 63 | "DATA","hh:mm:ss","hh:mm:ss" 64 | 65 | "GROUP","LLPL" 66 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 67 | "UNIT","","m","","","","","m","%","%","","%" 68 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 69 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 70 | 71 | "GROUP","LOCA" 72 | "HEADING","LOCA_ID","LOCA_NATE","LOCA_NATN","LOCA_LAT" 73 | "UNIT","","m","m","" 74 | "TYPE","ID","2DP","2DP","DMS" 75 | "DATA","327-16A","523145.00","-178456.12","51:28:52.498" 76 | "DATA","327-16B","523145.00","-178456.12","51:68:52.498" 77 | "DATA","327-16C","523145.00","-178456.12","51:28:152.498" 78 | "DATA","327-16D","523145.00","-178456.12",":28:152.498" 79 | 80 | "GROUP","SAMP" 81 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE","SAMP_RECL","SAMP_XXXX" 82 | "UNIT","","m","","","","m","mm","" 83 | "TYPE","ID","2DP","X","PA","ID","2DP","U","YN" 84 | "DATA","327-16A","15.00","15","U","","15.45","1.0","" 85 | "DATA","327-16A","24.55","24","U","","25.00","x","" 86 | 87 | "GROUP","ISPT" 88 | "HEADING","LOCA_ID","ISPT_TOP","ISPT_NVAL","ISPT_ROCK","ISPT_REM" 89 | "UNIT","","m","","","" 90 | "TYPE","ID","2DP","0DP","YN","X" 91 | "DATA","327-16A","1.00","7","Y","" 92 | "DATA","327-16A","2.00","7","N","" 93 | "DATA","327-16A","3.00","7","y","" 94 | "DATA","327-16A","4.00","7","n","" 95 | "DATA","327-16A","4.00","7","yes","" 96 | "DATA","327-16A","4.00","7","no","" 97 | "DATA","327-16A","4.00","7","YES","" 98 | "DATA","327-16A","4.00","7","NO","" 99 | "DATA","327-16A","4.00","7","xyz","" 100 | "DATA","327-16A","4.00","7","10","" 101 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule8-6.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT" 3 | "UNIT","","","","","" 4 | "TYPE","ID","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC" 9 | "UNIT","","","" 10 | "TYPE","X","X","X" 11 | "DATA","DICT_DTYP","X","Text" 12 | "DATA","DICT_DTYP","0DP","Value; required number of decimal places, 0" 13 | "DATA","DICT_TYPE","GROUP","Group" 14 | "DATA","DICT_TYPE","HEADING","Heading" 15 | "DATA","DICT_STAT","OTHER","Other Field" 16 | "DATA","DICT_STAT","KEY","Key Field" 17 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive" 18 | 19 | "GROUP","DICT" 20 | "HEADING","DICT_TYPE","DICT_GRP","DICT_HDNG","DICT_STAT","DICT_DTYP","DICT_DESC","DICT_UNIT","DICT_EXMP","DICT_PGRP","DICT_REM","FILE_FSET" 21 | "UNIT","","","","","","","","","","","" 22 | "TYPE","PA","X","X","PA","PT","X","PU","X","X","X","X" 23 | "DATA","HEADING","PROJ","PROJ_OFFC","OTHER","X","Undefined","","","","","" 24 | "DATA","HEADING","SAMP","SAMP_RECL","OTHER","0DP","SampleRecoveryLength","mm","","","","" 25 | 26 | "GROUP","TRAN" 27 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM" 28 | "UNIT","","yyyy-mm-dd","","","","","","","","" 29 | "TYPE","X","DT","X","X","X","X","X","X","X","X" 30 | "DATA","1","2021-01-24","ACME Drilling Ltd","Internal","Draft Logs only","4.1","ACME Consulting","|","+","Duplicate entries in SAMP_ID in SAMP" 31 | 32 | "GROUP","TYPE" 33 | "HEADING","TYPE_TYPE","TYPE_DESC" 34 | "UNIT","","" 35 | "TYPE","X","X" 36 | "DATA","U","Undefined" 37 | "DATA","X","Text" 38 | "DATA","ID","Unique identifier" 39 | "DATA","PA","ABBR pick list" 40 | "DATA","2DP","Value; required number of decimal places, 2" 41 | "DATA","DT","Date Time (ISO 8601:2004)" 42 | "DATA","0DP","Value; required number of decimal places, 0" 43 | "DATA","1DP","Value; required number of decimal places, 1" 44 | "DATA","XN","Text/Numeric" 45 | "DATA","PT","TYPE pick list" 46 | "DATA","PU","UNIT pick list" 47 | "DATA","2SF","Value; required number of significant figures, 2" 48 | "DATA","DMS","Degrees:Minutes:Seconds" 49 | "DATA","T","Elapsed time" 50 | "DATA","RL","Record link" 51 | 52 | "GROUP","UNIT" 53 | "HEADING","UNIT_UNIT","UNIT_DESC" 54 | "UNIT","","" 55 | "TYPE","X","X" 56 | "DATA","mm","millimetre" 57 | "DATA","-","No unit" 58 | "DATA","m","metre" 59 | "DATA","yyyy-mm-dd","Date (ISO8601)" 60 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)" 61 | "DATA","%","percentage" 62 | "DATA","l/min","litres per minute" 63 | "DATA","hh:mm:ss","hh:mm:ss" 64 | 65 | "GROUP","LLPL" 66 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 67 | "UNIT","","m","","","","","m","%","%","","%" 68 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 69 | "DATA","327-16A","15.00","15","U","ABC121415010","1","15.00","45","25","20","15" 70 | 71 | "GROUP","LOCA" 72 | "HEADING","LOCA_ID","LOCA_NATE","LOCA_NATN" 73 | "UNIT","","m","m" 74 | "TYPE","ID","2DP","2DP" 75 | "DATA","327-16A","523145.00","-178456.12" 76 | "DATA","327-16B","523145.01","178456.12" 77 | "DATA","327-16C","523145.02","178456.12" 78 | 79 | "GROUP","SAMP" 80 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE","SAMP_RECL" 81 | "UNIT","","m","","","","m","mm" 82 | "TYPE","ID","2DP","X","PA","ID","2DP","0DP" 83 | "DATA","327-16A","15.00","15","U","ABC121415010","15.45","" 84 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00","" 85 | "DATA","327-16A","25.55","25","U","ABC121415010","26.00","" 86 | 87 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule8-7.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT" 3 | "UNIT","","","","","" 4 | "TYPE","ID","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC" 9 | "UNIT","","","" 10 | "TYPE","X","X","X" 11 | "DATA","DICT_DTYP","X","Text" 12 | "DATA","DICT_DTYP","0DP","Value; required number of decimal places, 0" 13 | "DATA","DICT_TYPE","GROUP","Group" 14 | "DATA","DICT_TYPE","HEADING","Heading" 15 | "DATA","DICT_STAT","OTHER","Other Field" 16 | "DATA","DICT_STAT","KEY","Key Field" 17 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive" 18 | 19 | "GROUP","DICT" 20 | "HEADING","DICT_TYPE","DICT_GRP","DICT_HDNG","DICT_STAT","DICT_DTYP","DICT_DESC","DICT_UNIT","DICT_EXMP","DICT_PGRP","DICT_REM","FILE_FSET" 21 | "UNIT","","","","","","","","","","","" 22 | "TYPE","PA","X","X","PA","PT","X","PU","X","X","X","X" 23 | "DATA","HEADING","PROJ","PROJ_OFFC","OTHER","X","Undefined","","","","","" 24 | "DATA","HEADING","SAMP","SAMP_RECL","OTHER","0DP","SampleRecoveryLength","mm","","","","" 25 | 26 | "GROUP","TRAN" 27 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM" 28 | "UNIT","","yyyy-mm-dd","","","","","","","","" 29 | "TYPE","X","DT","X","X","X","X","X","X","X","X" 30 | "DATA","1","2021-01-24","ACME Drilling Ltd","Internal","Draft Logs only","4.1","ACME Consulting","|","+","Some entries in SAMP not of data type 2SCI" 31 | 32 | "GROUP","TYPE" 33 | "HEADING","TYPE_TYPE","TYPE_DESC" 34 | "UNIT","","" 35 | "TYPE","X","X" 36 | "DATA","U","Undefined" 37 | "DATA","X","Text" 38 | "DATA","ID","Unique identifier" 39 | "DATA","PA","ABBR pick list" 40 | "DATA","2DP","Value; required number of decimal places, 2" 41 | "DATA","DT","Date Time (ISO 8601:2004)" 42 | "DATA","0DP","Value; required number of decimal places, 0" 43 | "DATA","1DP","Value; required number of decimal places, 1" 44 | "DATA","XN","Text/Numeric" 45 | "DATA","PT","TYPE pick list" 46 | "DATA","PU","UNIT pick list" 47 | "DATA","2SF","Value; required number of significant figures, 2" 48 | "DATA","DMS","Degrees:Minutes:Seconds" 49 | "DATA","T","Elapsed time" 50 | "DATA","RL","Record link" 51 | 52 | "GROUP","UNIT" 53 | "HEADING","UNIT_UNIT","UNIT_DESC" 54 | "UNIT","","" 55 | "TYPE","X","X" 56 | "DATA","mm","millimetre" 57 | "DATA","-","No unit" 58 | "DATA","m","metre" 59 | "DATA","yyyy-mm-dd","Date (ISO8601)" 60 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)" 61 | "DATA","%","percentage" 62 | "DATA","l/min","litres per minute" 63 | "DATA","hh:mm:ss","hh:mm:ss" 64 | 65 | "GROUP","LOCA" 66 | "HEADING","LOCA_ID","LOCA_NATE","LOCA_NATN","LOCA_LAT","LOCA_LON" 67 | "UNIT","","m","m","","" 68 | "TYPE","ID","2DP","2DP","DMS","DMS" 69 | "DATA","327-16A","","","45:45:45.454","45:45:45.454" 70 | "DATA","327-17A","","","45:45:45.454","-45:45:45.454" 71 | "DATA","327-18A","","","45:45:45.454","135:45:45.454" 72 | "DATA","327-19A","","","45:45:45.454","-135:45:45.454" 73 | "DATA","327-20A","","","45:45:45.454","45:45:45,454" 74 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule9-1.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT" 3 | "UNIT","","","","","" 4 | "TYPE","ID","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC" 9 | "UNIT","","","" 10 | "TYPE","X","X","X" 11 | "DATA","DICT_DTYP","X","Text" 12 | "DATA","DICT_DTYP","0DP","Value; required number of decimal places, 0" 13 | "DATA","DICT_TYPE","GROUP","Group" 14 | "DATA","DICT_TYPE","HEADING","Heading" 15 | "DATA","DICT_STAT","OTHER","Other Field" 16 | "DATA","DICT_STAT","KEY","Key Field" 17 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive" 18 | 19 | "GROUP","DICT" 20 | "HEADING","DICT_TYPE","DICT_GRP","DICT_HDNG","DICT_STAT","DICT_DTYP","DICT_DESC","DICT_UNIT","DICT_EXMP","DICT_PGRP","DICT_REM","FILE_FSET" 21 | "UNIT","","","","","","","","","","","" 22 | "TYPE","PA","X","X","PA","PT","X","PU","X","X","X","X" 23 | "DATA","HEADING","LOCA","LOCA_ID","KEY","ID","Location identifier","","327-16A","","","" 24 | 25 | 26 | "GROUP","TRAN" 27 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM" 28 | "UNIT","","yyyy-mm-dd","","","","","","","","" 29 | "TYPE","X","DT","X","X","X","X","X","X","X","X" 30 | "DATA","1","2021-01-24","ACME Drilling Ltd","Internal","Draft Logs only","4.1","ACME Consulting","|","+","LOCA_ID in Dict when already defined" 31 | 32 | "GROUP","TYPE" 33 | "HEADING","TYPE_TYPE","TYPE_DESC" 34 | "UNIT","","" 35 | "TYPE","X","X" 36 | "DATA","U","Undefined" 37 | "DATA","X","Text" 38 | "DATA","ID","Unique identifier" 39 | "DATA","PA","ABBR pick list" 40 | "DATA","2DP","Value; required number of decimal places, 2" 41 | "DATA","DT","Date Time (ISO 8601:2004)" 42 | "DATA","0DP","Value; required number of decimal places, 0" 43 | "DATA","1DP","Value; required number of decimal places, 1" 44 | "DATA","XN","Text/Numeric" 45 | "DATA","PT","TYPE pick list" 46 | "DATA","PU","UNIT pick list" 47 | "DATA","2SF","Value; required number of significant figures, 2" 48 | "DATA","DMS","Degrees:Minutes:Seconds" 49 | "DATA","T","Elapsed time" 50 | "DATA","RL","Record link" 51 | 52 | "GROUP","UNIT" 53 | "HEADING","UNIT_UNIT","UNIT_DESC" 54 | "UNIT","","" 55 | "TYPE","X","X" 56 | "DATA","mm","millimetre" 57 | "DATA","-","No unit" 58 | "DATA","m","metre" 59 | "DATA","yyyy-mm-dd","Date (ISO8601)" 60 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)" 61 | "DATA","%","percentage" 62 | "DATA","l/min","litres per minute" 63 | "DATA","hh:mm:ss","hh:mm:ss" 64 | 65 | "GROUP","LLPL" 66 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 67 | "UNIT","","m","","","","","m","%","%","","%" 68 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 69 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 70 | 71 | "GROUP","LOCA" 72 | "HEADING","LOCA_ID","LOCA_NATE","LOCA_NATN" 73 | "UNIT","","m","m" 74 | "TYPE","ID","2DP","2DP" 75 | "DATA","327-16A","523145.00","178456.12" 76 | 77 | "GROUP","SAMP" 78 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE","SAMP_RECL" 79 | "UNIT","","m","","","","m","mm" 80 | "TYPE","ID","2DP","X","PA","ID","2DP","0DP" 81 | "DATA","327-16A","15.00","15","U","","15.45","" 82 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00","" 83 | 84 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule9-1.check: -------------------------------------------------------------------------------- 1 | {"Rule 9": [{"line": "23", "group": "DICT", "desc": "LOCA_ID duplicate heading defined in DICT. This is either a standard heading or already included above in DICT"}]} -------------------------------------------------------------------------------- /tests/test_files/4.1-rule9-2.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT" 3 | "UNIT","","","","","" 4 | "TYPE","ID","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC" 9 | "UNIT","","","" 10 | "TYPE","X","X","X" 11 | "DATA","DICT_DTYP","X","Text" 12 | "DATA","DICT_DTYP","0DP","Value; required number of decimal places, 0" 13 | "DATA","DICT_TYPE","GROUP","Group" 14 | "DATA","DICT_TYPE","HEADING","Heading" 15 | "DATA","DICT_STAT","OTHER","Other Field" 16 | "DATA","DICT_STAT","KEY","Key Field" 17 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive" 18 | 19 | "GROUP","DICT" 20 | "HEADING","DICT_TYPE","DICT_GRP","DICT_HDNG","DICT_STAT","DICT_DTYP","DICT_DESC","DICT_UNIT","DICT_EXMP","DICT_PGRP","DICT_REM","FILE_FSET" 21 | "UNIT","","","","","","","","","","","" 22 | "TYPE","PA","X","X","PA","PT","X","PU","X","X","X","X" 23 | "DATA","HEADING","LOCA","LOCA_ID","KEY","ID","Location identifier","","327-16A","","","" 24 | 25 | 26 | "GROUP","TRAN" 27 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM" 28 | "UNIT","","yyyy-mm-dd","","","","","","","","" 29 | "TYPE","X","DT","X","X","X","X","X","X","X","X" 30 | "DATA","1","2021-01-24","ACME Drilling Ltd","Internal","Draft Logs only","4.1","ACME Consulting","|","+","SAMP_XXXX not found in the DICT table or the standard AGS4 dictionary" 31 | 32 | "GROUP","TYPE" 33 | "HEADING","TYPE_TYPE","TYPE_DESC" 34 | "UNIT","","" 35 | "TYPE","X","X" 36 | "DATA","U","Undefined" 37 | "DATA","X","Text" 38 | "DATA","ID","Unique identifier" 39 | "DATA","PA","ABBR pick list" 40 | "DATA","2DP","Value; required number of decimal places, 2" 41 | "DATA","DT","Date Time (ISO 8601:2004)" 42 | "DATA","0DP","Value; required number of decimal places, 0" 43 | "DATA","1DP","Value; required number of decimal places, 1" 44 | "DATA","XN","Text/Numeric" 45 | "DATA","PT","TYPE pick list" 46 | "DATA","PU","UNIT pick list" 47 | "DATA","2SF","Value; required number of significant figures, 2" 48 | "DATA","DMS","Degrees:Minutes:Seconds" 49 | "DATA","T","Elapsed time" 50 | "DATA","RL","Record link" 51 | 52 | "GROUP","UNIT" 53 | "HEADING","UNIT_UNIT","UNIT_DESC" 54 | "UNIT","","" 55 | "TYPE","X","X" 56 | "DATA","mm","millimetre" 57 | "DATA","-","No unit" 58 | "DATA","m","metre" 59 | "DATA","yyyy-mm-dd","Date (ISO8601)" 60 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)" 61 | "DATA","%","percentage" 62 | "DATA","l/min","litres per minute" 63 | "DATA","hh:mm:ss","hh:mm:ss" 64 | 65 | "GROUP","LLPL" 66 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 67 | "UNIT","","m","","","","","m","%","%","","%" 68 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 69 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 70 | 71 | "GROUP","LOCA" 72 | "HEADING","LOCA_ID","LOCA_NATE","LOCA_NATN" 73 | "UNIT","","m","m" 74 | "TYPE","ID","2DP","2DP" 75 | "DATA","327-16A","523145.00","178456.12" 76 | 77 | "GROUP","SAMP" 78 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE","SAMP_RECL","SAMP_XXXX" 79 | "UNIT","","m","","","","m","mm","" 80 | "TYPE","ID","2DP","X","PA","ID","2DP","0DP","X" 81 | "DATA","327-16A","15.00","15","U","","15.45","","" 82 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00","","" 83 | 84 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule9.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT" 3 | "UNIT","","","","","" 4 | "TYPE","ID","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC" 9 | "UNIT","","","" 10 | "TYPE","X","X","X" 11 | "DATA","DICT_DTYP","X","Text" 12 | "DATA","DICT_DTYP","0DP","Value; required number of decimal places, 0" 13 | "DATA","DICT_TYPE","GROUP","Group" 14 | "DATA","DICT_TYPE","HEADING","Heading" 15 | "DATA","DICT_STAT","OTHER","Other Field" 16 | "DATA","DICT_STAT","KEY","Key Field" 17 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive" 18 | 19 | "GROUP","DICT" 20 | "HEADING","DICT_TYPE","DICT_GRP","DICT_HDNG","DICT_STAT","DICT_DTYP","DICT_DESC","DICT_UNIT","DICT_EXMP","DICT_PGRP","DICT_REM","FILE_FSET" 21 | "UNIT","","","","","","","","","","","" 22 | "TYPE","PA","X","X","PA","PT","X","PU","X","X","X","X" 23 | "DATA","HEADING","PROJ","PROJ_OFFC","OTHER","X","Undefined","","","","","" 24 | "DATA","HEADING","SAMP","SAMP_RECL","OTHER","0DP","SampleRecoveryLength","mm","","","","" 25 | 26 | "GROUP","TRAN" 27 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM" 28 | "UNIT","","yyyy-mm-dd","","","","","","","","" 29 | "TYPE","X","DT","X","X","X","X","X","X","X","X" 30 | "DATA","1","2021-01-24","ACME Drilling Ltd","Internal","Draft Logs only","4.1","ACME Consulting","|","+","No errors" 31 | 32 | "GROUP","TYPE" 33 | "HEADING","TYPE_TYPE","TYPE_DESC" 34 | "UNIT","","" 35 | "TYPE","X","X" 36 | "DATA","U","Undefined" 37 | "DATA","X","Text" 38 | "DATA","ID","Unique identifier" 39 | "DATA","PA","ABBR pick list" 40 | "DATA","2DP","Value; required number of decimal places, 2" 41 | "DATA","DT","Date Time (ISO 8601:2004)" 42 | "DATA","0DP","Value; required number of decimal places, 0" 43 | "DATA","1DP","Value; required number of decimal places, 1" 44 | "DATA","XN","Text/Numeric" 45 | "DATA","PT","TYPE pick list" 46 | "DATA","PU","UNIT pick list" 47 | "DATA","2SF","Value; required number of significant figures, 2" 48 | "DATA","DMS","Degrees:Minutes:Seconds" 49 | "DATA","T","Elapsed time" 50 | "DATA","RL","Record link" 51 | 52 | "GROUP","UNIT" 53 | "HEADING","UNIT_UNIT","UNIT_DESC" 54 | "UNIT","","" 55 | "TYPE","X","X" 56 | "DATA","mm","millimetre" 57 | "DATA","-","No unit" 58 | "DATA","m","metre" 59 | "DATA","yyyy-mm-dd","Date (ISO8601)" 60 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)" 61 | "DATA","%","percentage" 62 | "DATA","l/min","litres per minute" 63 | "DATA","hh:mm:ss","hh:mm:ss" 64 | 65 | "GROUP","LLPL" 66 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","LLPL_LL","LLPL_PL","LLPL_PI","LLPL_425" 67 | "UNIT","","m","","","","","m","%","%","","%" 68 | "TYPE","ID","2DP","X","PA","ID","X","2DP","2SF","XN","2SF","2SF" 69 | "DATA","327-16A","15.00","15","U","","1","15.00","45","25","20","15" 70 | 71 | "GROUP","LOCA" 72 | "HEADING","LOCA_ID","LOCA_NATE","LOCA_NATN" 73 | "UNIT","","m","m" 74 | "TYPE","ID","2DP","2DP" 75 | "DATA","327-16A","523145.00","178456.12" 76 | 77 | "GROUP","SAMP" 78 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE","SAMP_RECL" 79 | "UNIT","","m","","","","m","mm" 80 | "TYPE","ID","2DP","X","PA","ID","2DP","0DP" 81 | "DATA","327-16A","15.00","15","U","","15.45","" 82 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00","" 83 | 84 | -------------------------------------------------------------------------------- /tests/test_files/4.1-rule9.check: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /tests/test_files/AGS3.ags: -------------------------------------------------------------------------------- 1 | "**PROJ" 2 | "*PROJ_ID","*PROJ_NAME","*PROJ_LOC","*PROJ_CLNT","*PROJ_CONT","*PROJ_ENG","*PROJ_MEMO","*PROJ_DATE","*?PROJ_PROD","*?PROJ_RECV","*?PROJ_ISNO","*?PROJ_STAT","*PROJ_AGS","*FILE_FSET" 3 | "","","","","","","","dd/mm/yyyy","","","","","","" 4 | "5136919","A14 Ellington to Fen Ditton","Huntingdon","Highways Agency","Costain Skanska","Atkins","","10/04/2015","Atkins","BGS","2","Final","3.1","" 5 | 6 | -------------------------------------------------------------------------------- /tests/test_files/DuplicateGroups.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG" 3 | "UNIT","","","","","","" 4 | "TYPE","ID","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment"," Anytown","ACME Enterprises","ACME Drilling Ltd","ACME Consulting" 6 | 7 | "GROUP","TRAN" 8 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON" 9 | "UNIT","","yyyy-mm-dd","","","","","","","" 10 | "TYPE","X","DT","X","X","X","X","X","X","X" 11 | "DATA","1","2009-04-01","ACME Drilling Ltd","DRAFT","Draft Logs only","4.0","ACME Consulting","|","+" 12 | 13 | "GROUP","TYPE" 14 | "HEADING","TYPE_TYPE","TYPE_DESC" 15 | "UNIT","","" 16 | "TYPE","X","X" 17 | "DATA","ID","Unique Identifier" 18 | "DATA","X","Text" 19 | "DATA","PA","Text listed in ABBR Group" 20 | "DATA","DT"," Date time in international format " 21 | "DATA","2DP"," Value; 2 decimal places" 22 | 23 | "GROUP","LOCA" 24 | "HEADING","LOCA_ID","LOCA_NATE","LOCA_NATN" 25 | "UNIT","","m","m" 26 | "TYPE","ID","2DP","2DP" 27 | "DATA","327-16A","523145.00","178456.12" 28 | 29 | "GROUP","SAMP" 30 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE","SAMP_CONT" 31 | "UNIT","","m","","","","m","" 32 | "TYPE","ID","2DP","X","PA","ID","2DP","X" 33 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00","" 34 | 35 | "GROUP","UNIT" 36 | "HEADING","UNIT_UNIT","UNIT_DESC" 37 | "UNIT","","" 38 | "TYPE","X","X" 39 | "DATA","m","metres" 40 | "DATA","yyyy-mm-dd","date" 41 | 42 | "GROUP","SAMP" 43 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE","SAMP_CONT" 44 | "UNIT","","m","","","","m","" 45 | "TYPE","ID","2DP","X","PA","ID","2DP","X" 46 | "DATA","327-16A","98.00","98","U","","","" 47 | "DATA","327-16A","99.00","99","U","","","" 48 | -------------------------------------------------------------------------------- /tests/test_files/EmptyFile.ags: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asitha-sena/python-ags4/72f0889af17dbd40e75f7b455ceb2c8f4212520b/tests/test_files/EmptyFile.ags -------------------------------------------------------------------------------- /tests/test_files/FILE/327-16A/Report.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asitha-sena/python-ags4/72f0889af17dbd40e75f7b455ceb2c8f4212520b/tests/test_files/FILE/327-16A/Report.pdf -------------------------------------------------------------------------------- /tests/test_files/File_with_BOM.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","C","Core sample","","","" 16 | 17 | "GROUP","TRAN" 18 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 19 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 20 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 21 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","Line 71,Has Non-ASCII character(s)","" 22 | 23 | "GROUP","TYPE" 24 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 25 | "UNIT","","","" 26 | "TYPE","X","X","X" 27 | "DATA","U","Undefined","" 28 | "DATA","X","Text","" 29 | "DATA","ID","Unique identifier","" 30 | "DATA","PA","ABBR pick list","" 31 | "DATA","2DP","Value; required number of decimal places, 2","" 32 | "DATA","DT","Date Time (ISO 8601:2004)","" 33 | "DATA","0DP","Value; required number of decimal places, 0","" 34 | "DATA","1DP","Value; required number of decimal places, 1","" 35 | "DATA","PT","TYPE pick list","" 36 | "DATA","PU","UNIT pick list","" 37 | "DATA","DMS","Degrees:Minutes:Seconds","" 38 | "DATA","T","Elapsed time","" 39 | "DATA","RL","Record link","" 40 | 41 | "GROUP","UNIT" 42 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 43 | "UNIT","","","","" 44 | "TYPE","X","X","X","X" 45 | "DATA","-","No unit","","" 46 | "DATA","m","metre","","" 47 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 48 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 49 | "DATA","mm","millimetre","","" 50 | "DATA","%","percentage","","" 51 | "DATA","l/min","litres per minute","","" 52 | "DATA","hh:mm:ss","hh:mm:ss","","" 53 | 54 | 55 | "GROUP","LOCA" 56 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 57 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 58 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 59 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 60 | 61 | "GROUP","SAMP" 62 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE" 63 | "UNIT","","m","","","","m" 64 | "TYPE","ID","2DP","X","PA","ID","2DP" 65 | "DATA","327-16A","0.80","","C","","1.80" 66 | 67 | "GROUP","ASDI" 68 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SPEC_REF","SPEC_DPTH","SPEC_DESC","SPEC_PREP","ASDI_SDI1","ASDI_SDI2","ASDI_SOLN","ASDI_INDR","ASDI_PADR","ASDI_REM","ASDI_METH","ASDI_LAB","ASDI_CRED","TEST_STAT","FILE_FSET" 69 | "UNIT","","m","","","","","m","","","%","%","","","","","","","","","" 70 | "TYPE","ID","2DP","X","PA","ID","X","2DP","X","X","1DP","1DP","X","X","X","X","X","X","X","X","X" 71 | "DATA","327-16A"","0.80","","C","","","0.80","Crushed Rock","ISRM(2007)","","98.6","Water, 20+/-2°","Retained pieces remain virtually unchanged","Passing material ranges from fine to coarse sand sized particles","","ISRM(2007)","MATtest Limited","UKAS 2643","COMPLETED","" 72 | 73 | -------------------------------------------------------------------------------- /tests/test_files/LBSGCheck.check: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /tests/test_files/Row_with_missing_field.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","" 6 | -------------------------------------------------------------------------------- /tests/test_files/Rule20examples.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asitha-sena/python-ags4/72f0889af17dbd40e75f7b455ceb2c8f4212520b/tests/test_files/Rule20examples.zip -------------------------------------------------------------------------------- /tests/test_files/Standalone_SAMP_IDs.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Flag to indicate definition is a GROUP","","","" 12 | "DATA","DICT_TYPE","HEADING","Flag to indicate definition is a HEADING","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | 17 | "GROUP","TRAN" 18 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 19 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 20 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 21 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","SAMP table with only SAMP_ID populated","" 22 | 23 | "GROUP","TYPE" 24 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 25 | "UNIT","","","" 26 | "TYPE","X","X","X" 27 | "DATA","U","Undefined","" 28 | "DATA","X","Text","" 29 | "DATA","ID","Unique identifier","" 30 | "DATA","PA","ABBR pick list","" 31 | "DATA","2DP","Value; required number of decimal places, 2","" 32 | "DATA","DT","Date Time (ISO 8601:2004)","" 33 | "DATA","0DP","Value; required number of decimal places, 0","" 34 | "DATA","1DP","Value; required number of decimal places, 1","" 35 | "DATA","PT","TYPE pick list","" 36 | "DATA","PU","UNIT pick list","" 37 | "DATA","DMS","Degrees:Minutes:Seconds","" 38 | "DATA","T","Elapsed time","" 39 | "DATA","RL","Record link","" 40 | 41 | "GROUP","UNIT" 42 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 43 | "UNIT","","","","" 44 | "TYPE","X","X","X","X" 45 | "DATA","-","No unit","","" 46 | "DATA","m","metre","","" 47 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 48 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 49 | "DATA","mm","millimetre","","" 50 | "DATA","%","percentage","","" 51 | "DATA","l/min","litres per minute","","" 52 | "DATA","hh:mm:ss","hh:mm:ss","","" 53 | 54 | "GROUP","LOCA" 55 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 56 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 57 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 58 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 59 | 60 | "GROUP","SAMP" 61 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE","SAMP_DTIM","SAMP_UBLO","SAMP_CONT","SAMP_PREP","SAMP_SDIA","SAMP_WDEP","SAMP_RECV","SAMP_TECH","SAMP_MATX","SAMP_TYPC","SAMP_WHO","SAMP_WHY","SAMP_REM","SAMP_DESC","SAMP_DESD","SAMP_LOG","SAMP_COND","SAMP_CLSS","SAMP_BAR","SAMP_TEMP","SAMP_PRES","SAMP_FLOW","SAMP_ETIM","SAMP_DURN","SAMP_CAPT","SAMP_LINK","GEOL_STAT","FILE_FSET" 62 | "UNIT","","m","","","","m","yyyy-mm-ddThh:mm:ss.sss","","","","mm","m","%","","","","","","","","yyyy-mm-dd","","","","","","","l/min","yyyy-mm-ddThh:mm:ss.sss","hh:mm:ss","","","","" 63 | "TYPE","ID","2DP","X","PA","ID","2DP","DT","0DP","X","X","0DP","X","0DP","X","X","X","X","X","X","X","DT","X","X","X","1DP","0DP","1DP","1DP","DT","T","X","X","X","X" 64 | "DATA","","","","","ABC121415010","25.00","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 65 | "DATA","","","","","ABC121415011","25.00","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 66 | "DATA","","","","","ABC121415012","25.00","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 67 | 68 | -------------------------------------------------------------------------------- /tests/test_files/example1.ags: -------------------------------------------------------------------------------- 1 | "GROUP","PROJ" 2 | "HEADING","PROJ_ID","PROJ_NAME","PROJ_LOC","PROJ_CLNT","PROJ_CONT","PROJ_ENG","PROJ_MEMO","FILE_FSET" 3 | "UNIT","","","","","","","","" 4 | "TYPE","X","X","X","X","X","X","X","X" 5 | "DATA","121415","ACME Gas Works Redevelopment","Anytown","ACME Enterprises","ACME Drilling Ltd","","","" 6 | 7 | "GROUP","ABBR" 8 | "HEADING","ABBR_HDNG","ABBR_CODE","ABBR_DESC","ABBR_LIST","ABBR_REM","FILE_FSET" 9 | "UNIT","","","","","","" 10 | "TYPE","X","X","X","X","X","X" 11 | "DATA","DICT_TYPE","GROUP","Group","","","" 12 | "DATA","DICT_TYPE","HEADING","Heading","","","" 13 | "DATA","DICT_STAT","OTHER","Other Field","","","" 14 | "DATA","DICT_STAT","KEY","Key Field","","","" 15 | "DATA","SAMP_TYPE","U","Undisturbed sample - open drive","","","" 16 | 17 | "GROUP","TRAN" 18 | "HEADING","TRAN_ISNO","TRAN_DATE","TRAN_PROD","TRAN_STAT","TRAN_DESC","TRAN_AGS","TRAN_RECV","TRAN_DLIM","TRAN_RCON","TRAN_REM","FILE_FSET" 19 | "UNIT","","yyyy-mm-dd","","","","","","","","","" 20 | "TYPE","X","DT","X","X","X","X","X","X","X","X","X" 21 | "DATA","1","2021-01-18","ACME Drilling Ltd","Preliminary","Draft Logs only","4.1","ACME Consulting","|","+","","" 22 | 23 | "GROUP","TYPE" 24 | "HEADING","TYPE_TYPE","TYPE_DESC","FILE_FSET" 25 | "UNIT","","","" 26 | "TYPE","X","X","X" 27 | "DATA","U","Undefined","" 28 | "DATA","X","Text","" 29 | "DATA","ID","Unique identifier","" 30 | "DATA","PA","ABBR pick list","" 31 | "DATA","2DP","Value; required number of decimal places, 2","" 32 | "DATA","DT","Date Time (ISO 8601:2004)","" 33 | "DATA","0DP","Value; required number of decimal places, 0","" 34 | "DATA","1DP","Value; required number of decimal places, 1","" 35 | "DATA","PT","TYPE pick list","" 36 | "DATA","PU","UNIT pick list","" 37 | "DATA","DMS","Degrees:Minutes:Seconds","" 38 | "DATA","T","Elapsed time","" 39 | "DATA","RL","Record link","" 40 | 41 | "GROUP","UNIT" 42 | "HEADING","UNIT_UNIT","UNIT_DESC","UNIT_REM","FILE_FSET" 43 | "UNIT","","","","" 44 | "TYPE","X","X","X","X" 45 | "DATA","-","No unit","","" 46 | "DATA","m","metre","","" 47 | "DATA","yyyy-mm-dd","Date (ISO8601)","","" 48 | "DATA","yyyy-mm-ddThh:mm:ss.sss","Date Time (ISO8601)","","" 49 | "DATA","mm","millimetre","","" 50 | "DATA","%","percentage","","" 51 | "DATA","l/min","litres per minute","","" 52 | "DATA","hh:mm:ss","hh:mm:ss","","" 53 | 54 | "GROUP","LOCA" 55 | "HEADING","LOCA_ID","LOCA_TYPE","LOCA_STAT","LOCA_NATE","LOCA_NATN","LOCA_GREF","LOCA_GL","LOCA_REM","LOCA_FDEP","LOCA_STAR","LOCA_PURP","LOCA_TERM","LOCA_ENDD","LOCA_LETT","LOCA_LOCX","LOCA_LOCY","LOCA_LOCZ","LOCA_LREF","LOCA_DATM","LOCA_ETRV","LOCA_NTRV","LOCA_LTRV","LOCA_XTRL","LOCA_YTRL","LOCA_ZTRL","LOCA_LAT","LOCA_LON","LOCA_ELAT","LOCA_ELON","LOCA_LLZ","LOCA_LOCM","LOCA_LOCA","LOCA_CLST","LOCA_ALID","LOCA_OFFS","LOCA_CNGE","LOCA_TRAN","FILE_FSET" 56 | "UNIT","","","","m","m","","m","","m","yyyy-mm-dd","","","yyyy-mm-dd","","m","m","m","","","m","m","m","m","m","m","","","","","","","","","","","","","" 57 | "TYPE","ID","PA","PA","2DP","2DP","PA","2DP","X","2DP","DT","X","X","DT","X","2DP","2DP","2DP","X","X","2DP","2DP","2DP","2DP","2DP","2DP","DMS","DMS","DMS","DMS","X","X","X","X","X","2DP","X","X","X" 58 | "DATA","327-16A","","","523145.00","178456.12","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 59 | 60 | "GROUP","SAMP" 61 | "HEADING","LOCA_ID","SAMP_TOP","SAMP_REF","SAMP_TYPE","SAMP_ID","SAMP_BASE","SAMP_DTIM","SAMP_UBLO","SAMP_CONT","SAMP_PREP","SAMP_SDIA","SAMP_WDEP","SAMP_RECV","SAMP_TECH","SAMP_MATX","SAMP_TYPC","SAMP_WHO","SAMP_WHY","SAMP_REM","SAMP_DESC","SAMP_DESD","SAMP_LOG","SAMP_COND","SAMP_CLSS","SAMP_BAR","SAMP_TEMP","SAMP_PRES","SAMP_FLOW","SAMP_ETIM","SAMP_DURN","SAMP_CAPT","SAMP_LINK","GEOL_STAT","FILE_FSET" 62 | "UNIT","","m","","","","m","yyyy-mm-ddThh:mm:ss.sss","","","","mm","m","%","","","","","","","","yyyy-mm-dd","","","","","","","l/min","yyyy-mm-ddThh:mm:ss.sss","hh:mm:ss","","","","" 63 | "TYPE","ID","2DP","X","PA","ID","2DP","DT","0DP","X","X","0DP","X","0DP","X","X","X","X","X","X","X","DT","X","X","X","1DP","0DP","1DP","1DP","DT","T","X","X","X","X" 64 | "DATA","327-16A","24.55","24","U","ABC121415010","25.00","","","","","","","","","","","","","","","","","","","","","","","","","","","","" 65 | 66 | -------------------------------------------------------------------------------- /tests/test_files/example1.check: -------------------------------------------------------------------------------- 1 | {} --------------------------------------------------------------------------------