mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
tests: add corejson package test application
This commit is contained in:
parent
4281d4b226
commit
74b8bd5aa3
6
tests/pkg_corejson/Makefile
Normal file
6
tests/pkg_corejson/Makefile
Normal file
@ -0,0 +1,6 @@
|
||||
include ../Makefile.tests_common
|
||||
|
||||
# required packages
|
||||
USEPKG += corejson
|
||||
|
||||
include $(RIOTBASE)/Makefile.include
|
59
tests/pkg_corejson/main.c
Normal file
59
tests/pkg_corejson/main.c
Normal file
@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Copyright (C) 2021 Inria
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup tests
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @brief coreJSON package test application
|
||||
*
|
||||
* Adapted to RIOT style from the [reference example](https://github.com/FreeRTOS/coreJSON#reference-example)
|
||||
*
|
||||
* @author Alexandre Abadie <alexandre.abadie@inria.fr>
|
||||
*
|
||||
* @}
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "core_json.h"
|
||||
|
||||
int main(void)
|
||||
{
|
||||
/* Variables used in this example. */
|
||||
JSONStatus_t result;
|
||||
char buffer[] = "{\"foo\":\"abc\",\"bar\":{\"foo\":\"xyz\"}}";
|
||||
size_t bufferLength = sizeof(buffer) - 1;
|
||||
char queryKey[] = "bar.foo";
|
||||
size_t queryKeyLength = sizeof(queryKey) - 1;
|
||||
char *value;
|
||||
size_t valueLength;
|
||||
|
||||
/* Calling JSON_Validate() is not necessary if the document is guaranteed to be valid. */
|
||||
result = JSON_Validate(buffer, bufferLength);
|
||||
|
||||
if (result == JSONSuccess) {
|
||||
result = JSON_Search(
|
||||
buffer, bufferLength, queryKey, queryKeyLength,
|
||||
&value, &valueLength
|
||||
);
|
||||
}
|
||||
|
||||
if (result == JSONSuccess) {
|
||||
/* The pointer "value" will point to a location in the "buffer". */
|
||||
char save = value[valueLength];
|
||||
/* After saving the character, set it to a null byte for printing. */
|
||||
value[valueLength] = '\0';
|
||||
/* "Found: bar.foo -> xyz" will be printed. */
|
||||
printf("Found: %s -> %s\n", queryKey, value);
|
||||
/* Restore the original character. */
|
||||
value[valueLength] = save;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
18
tests/pkg_corejson/tests/01-run.py
Executable file
18
tests/pkg_corejson/tests/01-run.py
Executable file
@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Copyright (C) 2021 Inria
|
||||
#
|
||||
# This file is subject to the terms and conditions of the GNU Lesser
|
||||
# General Public License v2.1. See the file LICENSE in the top level
|
||||
# directory for more details.
|
||||
|
||||
import sys
|
||||
from testrunner import run
|
||||
|
||||
|
||||
def testfunc(child):
|
||||
child.expect_exact("Found: bar.foo -> xyz")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(run(testfunc))
|
Loading…
Reference in New Issue
Block a user