TCK Results
===========

As required by the
[Eclipse Foundation Technology Compatibility Kit License](https://www.eclipse.org/legal/tck.php),
following is a summary of the TCK results for releases of Eclipse Yasson.

# 2.0.0 Certification Request

- [x] Organization Name ("Organization") and, if applicable, URL\
  Eclipse Foundation
- [x] Product Name, Version and download URL (if applicable)\
  [Eclipse Yasson 2.0.0](https://eclipse-ee4j.github.io/yasson)
- [x] Specification Name, Version and download URL\
  [Jakarta JSON Binding 2.0](https://jakarta.ee/specifications/jsonb/2.0/)
- [x] TCK Version, digital SHA-256 fingerprint and download URL\
  [Jakarta JSON Binding TCK 2.0.0](https://download.eclipse.org/ee4j/jakartaee-tck/jakartaee9-eftl/promoted/jakarta-jsonb-tck-2.0.0.zip), SHA-256: 7f3d072602f8935e46cf6ec94b0418af88cce176aa999b7a6a8701c7b9f65a52
- [x] Public URL of TCK Results Summary\
  [TCK results summary](https://eclipse-ee4j.github.io/yasson/tck/TCK-Results.html)
- [x] Any Additional Specification Certification Requirements\
  None
- [x] Java runtime used to run the implementation\
  Oracle JDK 1.8.0_191
- [x] Summary of the information for the certification environment, operating system, cloud, ...\
  Linux
- [x] By checking this box I acknowledge that the Organization I represent accepts the terms of the [EFTL](https://www.eclipse.org/legal/tck.php).
- [x] By checking this box I attest that all TCK requirements have been met, including any compatibility rules.

Test results:

```
[javatest.batch] Number of Tests Passed      = 266
[javatest.batch] Number of Tests Failed      = 0
[javatest.batch] Number of Tests with Errors = 0
```

# 1.0.8 Certification Request

- [x] Organization Name ("Organization") and, if applicable, URL\
  Eclipse Foundation
- [x] Product Name, Version and download URL (if applicable)\
  [Eclipse Yasson 1.0.8](https://eclipse-ee4j.github.io/yasson)
- [x] Specification Name, Version and download URL\
  [Jakarta JSON Binding 1.0](https://jakarta.ee/specifications/jsonb/1.0/)
- [x] TCK Version, digital SHA-256 fingerprint and download URL\
  [Jakarta JSON Binding TCK 1.0.1](http://download.eclipse.org/ee4j/jakartaee-tck/jakartaee8-eftl/promoted/eclipse-jsonb-tck-1.0.1.zip), SHA-256: c4382cc838113934494bcb5319715e31501f71abf6380523b961580c41c52eba
  SHA256SUM: c4382cc838113934494bcb5319715e31501f71abf6380523b961580c41c52eba
- [x] Public URL of TCK Results Summary\
  [TCK results summary](https://eclipse-ee4j.github.io/yasson/tck/TCK-Results.html)
- [x] Any Additional Specification Certification Requirements\
  None
- [x] Java runtime used to run the implementation\
  Oracle JDK 1.8.0_191
- [x] Summary of the information for the certification environment, operating system, cloud, ...\
  Linux
- [x] By checking this box I acknowledge that the Organization I represent accepts the terms of the [EFTL](https://www.eclipse.org/legal/tck.php).
- [x] By checking this box I attest that all TCK requirements have been met, including any compatibility rules.

Test results:

```
[javatest.batch] Number of Tests Passed      = 266
[javatest.batch] Number of Tests Failed      = 0
[javatest.batch] Number of Tests with Errors = 0
```
