From 8734273c09224fa90e517dff226bec49a810be83 Mon Sep 17 00:00:00 2001 From: Vertexwahn Date: Fri, 3 May 2024 14:01:07 +0200 Subject: [PATCH] Project import generated by Copybara. GitOrigin-RevId: 68539be18bdf0b43286c2c4203da7887d51d6968 --- azure-pipelines.yml | 12 +- devertexwahn/okapi/third_party/libwebp.BUILD | 218 ----- devertexwahn/okapi/third_party/pugixml.BUILD | 16 - .../Catch2/CMake/CatchMiscFunctions.cmake | 1 + .../Catch2/src/catch2/catch_tostring.cpp | 4 +- .../src/catch2/internal/catch_decomposer.hpp | 2 + .../matchers/internal/catch_matchers_impl.hpp | 17 + .../Baselines/automake.sw.approved.txt | 1 - .../Baselines/automake.sw.multi.approved.txt | 1 - .../Baselines/compact.sw.approved.txt | 399 +++++--- .../Baselines/compact.sw.multi.approved.txt | 399 +++++--- .../Baselines/console.std.approved.txt | 38 +- .../Baselines/console.sw.approved.txt | 435 ++++++--- .../Baselines/console.sw.multi.approved.txt | 435 ++++++--- .../SelfTest/Baselines/junit.sw.approved.txt | 37 +- .../Baselines/junit.sw.multi.approved.txt | 37 +- .../Baselines/sonarqube.sw.approved.txt | 35 +- .../Baselines/sonarqube.sw.multi.approved.txt | 35 +- .../SelfTest/Baselines/tap.sw.approved.txt | 244 +++-- .../Baselines/tap.sw.multi.approved.txt | 244 +++-- .../Baselines/teamcity.sw.approved.txt | 26 +- .../Baselines/teamcity.sw.multi.approved.txt | 26 +- .../SelfTest/Baselines/xml.sw.approved.txt | 443 +++++---- .../Baselines/xml.sw.multi.approved.txt | 443 +++++---- .../InternalBenchmark.tests.cpp | 2 +- .../UsageTests/ToStringGeneral.tests.cpp | 2 +- .../UsageTests/ToStringTuple.tests.cpp | 8 +- third_party/abseil-cpp/CMake/AbseilDll.cmake | 5 + .../abseil-cpp/absl/base/internal/spinlock.h | 5 +- .../abseil-cpp/absl/container/BUILD.bazel | 19 +- .../abseil-cpp/absl/container/CMakeLists.txt | 21 +- .../abseil-cpp/absl/container/flat_hash_map.h | 10 +- .../abseil-cpp/absl/container/flat_hash_set.h | 6 +- .../absl/container/hash_container_defaults.h | 45 + .../abseil-cpp/absl/container/node_hash_map.h | 10 +- .../abseil-cpp/absl/container/node_hash_set.h | 9 +- .../absl/functional/any_invocable.h | 6 +- .../abseil-cpp/absl/functional/overload.h | 66 +- .../absl/functional/overload_test.cc | 145 +-- .../abseil-cpp/absl/random/distributions.h | 4 +- .../abseil-cpp/absl/status/BUILD.bazel | 35 + .../abseil-cpp/absl/status/CMakeLists.txt | 37 + .../absl/status/internal/status_matchers.cc | 68 ++ .../absl/status/internal/status_matchers.h | 246 +++++ .../abseil-cpp/absl/status/status_matchers.h | 118 +++ .../absl/status/status_matchers_test.cc | 119 +++ .../abseil-cpp/absl/strings/BUILD.bazel | 1 + .../abseil-cpp/absl/strings/CMakeLists.txt | 1 + third_party/abseil-cpp/absl/strings/cord.cc | 9 +- .../abseil-cpp/absl/strings/cord_test.cc | 62 +- .../internal/str_format/convert_test.cc | 17 +- .../abseil-cpp/absl/synchronization/mutex.h | 7 +- .../time/internal/cctz/src/time_zone_libc.cc | 2 +- .../bazel-skylib/.bazelci/presubmit.yml | 198 ++-- third_party/bazel-skylib/BUILD | 14 +- third_party/bazel-skylib/CHANGELOG.md | 26 + third_party/bazel-skylib/MODULE.bazel | 12 +- third_party/bazel-skylib/README.md | 1 + third_party/bazel-skylib/WORKSPACE | 32 +- third_party/bazel-skylib/bzl_library.bzl | 5 +- third_party/bazel-skylib/distribution/BUILD | 3 + third_party/bazel-skylib/docs/BUILD | 8 + .../bazel-skylib/docs/analysis_test_doc.md | 48 +- third_party/bazel-skylib/docs/bzl_library.md | 5 +- .../bazel-skylib/docs/collections_doc.md | 4 +- .../bazel-skylib/docs/common_settings_doc.md | 13 +- .../bazel-skylib/docs/copy_directory_doc.md | 5 +- .../bazel-skylib/docs/copy_file_doc.md | 7 +- third_party/bazel-skylib/docs/dicts_doc.md | 4 +- .../bazel-skylib/docs/diff_test_doc.md | 7 +- .../bazel-skylib/docs/expand_template_doc.md | 1 - .../bazel-skylib/docs/maintainers_guide.md | 2 +- third_party/bazel-skylib/docs/modules_doc.md | 78 ++ .../bazel-skylib/docs/native_binary_doc.md | 17 +- third_party/bazel-skylib/docs/new_sets_doc.md | 213 +++-- third_party/bazel-skylib/docs/partial_doc.md | 91 +- third_party/bazel-skylib/docs/paths_doc.md | 1 - third_party/bazel-skylib/docs/private/BUILD | 6 +- .../docs/private/stardoc_with_diff_test.bzl | 2 +- .../bazel-skylib/docs/run_binary_doc.md | 14 +- .../bazel-skylib/docs/select_file_doc.md | 2 - third_party/bazel-skylib/docs/selects_doc.md | 92 +- third_party/bazel-skylib/docs/shell_doc.md | 2 +- third_party/bazel-skylib/docs/structs_doc.md | 2 +- .../bazel-skylib/docs/subpackages_doc.md | 7 +- third_party/bazel-skylib/docs/types_doc.md | 108 +-- third_party/bazel-skylib/docs/unittest_doc.md | 383 ++++---- third_party/bazel-skylib/docs/versions_doc.md | 78 +- .../bazel-skylib/docs/write_file_doc.md | 9 +- third_party/bazel-skylib/gazelle/BUILD | 11 + third_party/bazel-skylib/gazelle/MODULE.bazel | 5 +- third_party/bazel-skylib/gazelle/bzl/BUILD | 2 + .../bazel-skylib/gazelle/workspace.bzl | 10 + third_party/bazel-skylib/lib/BUILD | 12 +- third_party/bazel-skylib/lib/modules.bzl | 120 +++ third_party/bazel-skylib/rules/BUILD | 7 +- .../bazel-skylib/rules/native_binary.bzl | 9 +- third_party/bazel-skylib/rules/private/BUILD | 2 + third_party/bazel-skylib/rules/run_binary.bzl | 22 +- third_party/bazel-skylib/tests/BUILD | 8 + .../bazel-skylib/tests/build_test_tests.bzl | 3 +- .../bazel-skylib/tests/bzl_library/BUILD | 39 + .../tests/bzl_library/bzl_library_test.bzl | 54 ++ .../tests/bzl_library/testdata/a.bzl | 3 + .../tests/bzl_library/testdata/b.bzl | 3 + .../tests/bzl_library/testdata/c.bzl | 6 + .../bazel-skylib/tests/common_settings/BUILD | 7 +- .../tests/copy_directory/BUILD.bazel | 7 +- .../bazel-skylib/tests/copy_file/BUILD | 7 +- .../bazel-skylib/tests/diff_test/BUILD | 7 +- .../bazel-skylib/tests/expand_template/BUILD | 5 + .../bazel-skylib/tests/modules_test.bzl | 70 ++ .../bazel-skylib/tests/native_binary/BUILD | 8 +- .../bazel-skylib/tests/run_binary/BUILD | 29 +- .../bazel-skylib/tests/select_file/BUILD | 5 + .../bazel-skylib/tests/subpackages_tests.bzl | 2 + .../bazel-skylib/tests/unittest_test.sh | 5 +- .../bazel-skylib/tests/write_file/BUILD | 7 +- .../bazel-skylib/toolchains/unittest/BUILD | 2 + third_party/bazel-skylib/version.bzl | 2 +- third_party/bazel-skylib/workspace.bzl | 11 + third_party/fmt/.github/workflows/cifuzz.yml | 2 +- .../fmt/.github/workflows/scorecard.yml | 4 +- third_party/fmt/doc/api.rst | 11 +- third_party/fmt/include/fmt/base.h | 2 +- third_party/fmt/include/fmt/format.h | 7 +- third_party/fmt/include/fmt/ranges.h | 28 +- third_party/fmt/test/format-test.cc | 38 +- third_party/fmt/test/mock-allocator.h | 10 + third_party/fmt/test/ranges-test.cc | 12 +- third_party/glog/.github/workflows/linux.yml | 2 +- third_party/glog/.github/workflows/macos.yml | 2 +- .../glog/.github/workflows/windows.yml | 2 +- third_party/glog/src/symbolize.cc | 15 +- .../googletest/docs/gmock_cook_book.md | 35 +- .../include/gtest/gtest-param-test.h | 2 +- third_party/hypothesis/hypothesis.h | 38 +- third_party/rules_boost/boost/boost.bzl | 10 +- third_party/software-bill-of-materials.md | 18 +- third_party/yaml-cpp/src/emitterutils.cpp | 4 +- .../{zlib-1.3 => zlib-1.3.1}/CMakeLists.txt | 43 +- .../{zlib-1.3 => zlib-1.3.1}/ChangeLog | 10 + third_party/{zlib-1.3 => zlib-1.3.1}/FAQ | 3 +- third_party/{zlib-1.3 => zlib-1.3.1}/INDEX | 0 third_party/{zlib-1.3 => zlib-1.3.1}/LICENSE | 0 third_party/{zlib-1.3 => zlib-1.3.1}/Makefile | 0 .../{zlib-1.3 => zlib-1.3.1}/Makefile.in | 16 +- third_party/{zlib-1.3 => zlib-1.3.1}/README | 6 +- .../{zlib-1.3 => zlib-1.3.1}/adler32.c | 0 .../amiga/Makefile.pup | 0 .../amiga/Makefile.sas | 0 .../{zlib-1.3 => zlib-1.3.1}/compress.c | 0 .../{zlib-1.3 => zlib-1.3.1}/configure | 9 +- .../contrib/README.contrib | 0 .../contrib/ada/buffer_demo.adb | 0 .../contrib/ada/mtest.adb | 0 .../contrib/ada/read.adb | 0 .../contrib/ada/readme.txt | 0 .../contrib/ada/test.adb | 0 .../contrib/ada/zlib-streams.adb | 0 .../contrib/ada/zlib-streams.ads | 0 .../contrib/ada/zlib-thin.adb | 0 .../contrib/ada/zlib-thin.ads | 0 .../contrib/ada/zlib.adb | 0 .../contrib/ada/zlib.ads | 0 .../contrib/ada/zlib.gpr | 0 .../contrib/blast/Makefile | 0 .../contrib/blast/README | 0 .../contrib/blast/blast.c | 0 .../contrib/blast/blast.h | 0 .../contrib/blast/test.pk | Bin .../contrib/blast/test.txt | 0 .../contrib/delphi/ZLib.pas | 2 +- .../contrib/delphi/ZLibConst.pas | 0 .../contrib/delphi/readme.txt | 0 .../contrib/delphi/zlibd32.mak | 0 .../contrib/dotzlib/DotZLib.build | 0 .../contrib/dotzlib/DotZLib.chm | Bin .../contrib/dotzlib/DotZLib.sln | 0 .../contrib/dotzlib/DotZLib/AssemblyInfo.cs | 0 .../contrib/dotzlib/DotZLib/ChecksumImpl.cs | 2 +- .../contrib/dotzlib/DotZLib/CircularBuffer.cs | 0 .../contrib/dotzlib/DotZLib/CodecBase.cs | 0 .../contrib/dotzlib/DotZLib/Deflater.cs | 0 .../contrib/dotzlib/DotZLib/DotZLib.cs | 0 .../contrib/dotzlib/DotZLib/DotZLib.csproj | 0 .../contrib/dotzlib/DotZLib/GZipStream.cs | 0 .../contrib/dotzlib/DotZLib/Inflater.cs | 0 .../contrib/dotzlib/DotZLib/UnitTests.cs | 2 +- .../contrib/dotzlib/LICENSE_1_0.txt | 0 .../contrib/dotzlib/readme.txt | 0 .../contrib/gcc_gvmat64/gvmat64.S | 0 .../contrib/infback9/README | 0 .../contrib/infback9/infback9.c | 0 .../contrib/infback9/infback9.h | 0 .../contrib/infback9/inffix9.h | 0 .../contrib/infback9/inflate9.h | 0 .../contrib/infback9/inftree9.c | 6 +- .../contrib/infback9/inftree9.h | 4 +- .../contrib/iostream/test.cpp | 0 .../contrib/iostream/zfstream.cpp | 0 .../contrib/iostream/zfstream.h | 0 .../contrib/iostream2/zstream.h | 0 .../contrib/iostream2/zstream_test.cpp | 0 .../contrib/iostream3/README | 0 .../contrib/iostream3/TODO | 0 .../contrib/iostream3/test.cc | 0 .../contrib/iostream3/zfstream.cc | 0 .../contrib/iostream3/zfstream.h | 4 +- .../contrib/minizip/Makefile | 2 +- .../contrib/minizip/Makefile.am | 0 .../contrib/minizip/MiniZip64_Changes.txt | 0 .../contrib/minizip/MiniZip64_info.txt | 0 .../contrib/minizip/configure.ac | 2 +- .../contrib/minizip/crypt.h | 0 .../contrib/minizip/ioapi.c | 0 .../contrib/minizip/ioapi.h | 2 +- .../contrib/minizip/iowin32.c | 0 .../contrib/minizip/iowin32.h | 0 .../contrib/minizip/make_vms.com | 0 .../contrib/minizip/miniunz.c | 18 +- .../contrib/minizip/miniunzip.1 | 0 .../contrib/minizip/minizip.1 | 0 .../contrib/minizip/minizip.c | 0 .../contrib/minizip/minizip.pc.in | 0 .../contrib/minizip/mztools.c | 0 .../contrib/minizip/mztools.h | 0 .../contrib/minizip/unzip.c | 8 +- .../contrib/minizip/unzip.h | 2 +- .../contrib/minizip/zip.c | 21 +- .../contrib/minizip/zip.h | 4 +- .../zlib-1.3.1/contrib/nuget/nuget.csproj | 43 + .../zlib-1.3.1/contrib/nuget/nuget.sln | 22 + .../contrib/pascal/example.pas | 0 .../contrib/pascal/readme.txt | 0 .../contrib/pascal/zlibd32.mak | 0 .../contrib/pascal/zlibpas.pas | 2 +- .../contrib/puff/Makefile | 0 .../contrib/puff/README | 0 .../contrib/puff/puff.c | 8 +- .../contrib/puff/puff.h | 0 .../contrib/puff/pufftest.c | 0 .../contrib/puff/zeros.raw | Bin .../contrib/testzlib/testzlib.c | 0 .../contrib/testzlib/testzlib.txt | 0 .../contrib/untgz/Makefile | 0 .../contrib/untgz/Makefile.msc | 0 .../contrib/untgz/untgz.c | 0 .../contrib/vstudio/readme.txt | 10 +- .../contrib/vstudio/vc10/miniunz.vcxproj | 0 .../vstudio/vc10/miniunz.vcxproj.filters | 0 .../contrib/vstudio/vc10/minizip.vcxproj | 0 .../vstudio/vc10/minizip.vcxproj.filters | 0 .../contrib/vstudio/vc10/testzlib.vcxproj | 0 .../vstudio/vc10/testzlib.vcxproj.filters | 0 .../contrib/vstudio/vc10/testzlibdll.vcxproj | 0 .../vstudio/vc10/testzlibdll.vcxproj.filters | 0 .../contrib/vstudio/vc10}/zlib.rc | 8 +- .../contrib/vstudio/vc10/zlibstat.vcxproj | 0 .../vstudio/vc10/zlibstat.vcxproj.filters | 0 .../contrib/vstudio/vc10}/zlibvc.def | 2 +- .../contrib/vstudio/vc10/zlibvc.sln | 0 .../contrib/vstudio/vc10/zlibvc.vcxproj | 0 .../vstudio/vc10/zlibvc.vcxproj.filters | 0 .../contrib/vstudio/vc11/miniunz.vcxproj | 0 .../contrib/vstudio/vc11/minizip.vcxproj | 0 .../contrib/vstudio/vc11/testzlib.vcxproj | 0 .../contrib/vstudio/vc11/testzlibdll.vcxproj | 0 .../contrib/vstudio/vc11}/zlib.rc | 8 +- .../contrib/vstudio/vc11/zlibstat.vcxproj | 0 .../contrib/vstudio/vc11/zlibvc.def | 2 +- .../contrib/vstudio/vc11/zlibvc.sln | 0 .../contrib/vstudio/vc11/zlibvc.vcxproj | 0 .../contrib/vstudio/vc12/miniunz.vcxproj | 0 .../contrib/vstudio/vc12/minizip.vcxproj | 0 .../contrib/vstudio/vc12/testzlib.vcxproj | 0 .../contrib/vstudio/vc12/testzlibdll.vcxproj | 0 .../contrib/vstudio/vc12}/zlib.rc | 8 +- .../contrib/vstudio/vc12/zlibstat.vcxproj | 0 .../contrib/vstudio/vc12/zlibvc.def | 2 +- .../contrib/vstudio/vc12/zlibvc.sln | 0 .../contrib/vstudio/vc12/zlibvc.vcxproj | 0 .../contrib/vstudio/vc14/miniunz.vcxproj | 0 .../contrib/vstudio/vc14/minizip.vcxproj | 0 .../contrib/vstudio/vc14/testzlib.vcxproj | 0 .../contrib/vstudio/vc14/testzlibdll.vcxproj | 0 .../contrib/vstudio/vc14/zlib.rc | 8 +- .../contrib/vstudio/vc14/zlibstat.vcxproj | 0 .../contrib/vstudio/vc14}/zlibvc.def | 2 +- .../contrib/vstudio/vc14/zlibvc.sln | 0 .../contrib/vstudio/vc14/zlibvc.vcxproj | 0 .../contrib/vstudio/vc17/miniunz.vcxproj | 409 ++++++++ .../contrib/vstudio/vc17/minizip.vcxproj | 405 ++++++++ .../contrib/vstudio/vc17/testzlib.vcxproj | 473 ++++++++++ .../contrib/vstudio/vc17/testzlibdll.vcxproj | 409 ++++++++ .../zlib-1.3.1/contrib/vstudio/vc17/zlib.rc | 32 + .../contrib/vstudio/vc17/zlibstat.vcxproj | 602 ++++++++++++ .../contrib/vstudio/vc17/zlibvc.def | 158 ++++ .../contrib/vstudio/vc17/zlibvc.sln | 179 ++++ .../contrib/vstudio/vc17/zlibvc.vcxproj | 875 ++++++++++++++++++ .../contrib/vstudio/vc9/miniunz.vcproj | 0 .../contrib/vstudio/vc9/minizip.vcproj | 0 .../contrib/vstudio/vc9/testzlib.vcproj | 0 .../contrib/vstudio/vc9/testzlibdll.vcproj | 0 .../zlib-1.3.1/contrib/vstudio/vc9/zlib.rc | 32 + .../contrib/vstudio/vc9/zlibstat.vcproj | 0 .../zlib-1.3.1/contrib/vstudio/vc9/zlibvc.def | 158 ++++ .../contrib/vstudio/vc9/zlibvc.sln | 0 .../contrib/vstudio/vc9/zlibvc.vcproj | 0 third_party/{zlib-1.3 => zlib-1.3.1}/crc32.c | 0 third_party/{zlib-1.3 => zlib-1.3.1}/crc32.h | 0 .../{zlib-1.3 => zlib-1.3.1}/deflate.c | 47 +- .../{zlib-1.3 => zlib-1.3.1}/deflate.h | 35 +- .../doc/algorithm.txt | 2 +- .../doc/crc-doc.1.0.pdf | Bin .../{zlib-1.3 => zlib-1.3.1}/doc/rfc1950.txt | 0 .../{zlib-1.3 => zlib-1.3.1}/doc/rfc1951.txt | 0 .../{zlib-1.3 => zlib-1.3.1}/doc/rfc1952.txt | 0 .../{zlib-1.3 => zlib-1.3.1}/doc/txtvsbin.txt | 0 .../examples/README.examples | 0 .../examples/enough.c | 0 .../examples/fitblk.c | 0 .../{zlib-1.3 => zlib-1.3.1}/examples/gun.c | 0 .../examples/gzappend.c | 0 .../examples/gzjoin.c | 0 .../{zlib-1.3 => zlib-1.3.1}/examples/gzlog.c | 4 +- .../{zlib-1.3 => zlib-1.3.1}/examples/gzlog.h | 0 .../examples/gznorm.c | 0 .../examples/zlib_how.html | 0 .../{zlib-1.3 => zlib-1.3.1}/examples/zpipe.c | 0 .../{zlib-1.3 => zlib-1.3.1}/examples/zran.c | 2 +- .../{zlib-1.3 => zlib-1.3.1}/examples/zran.h | 0 .../{zlib-1.3 => zlib-1.3.1}/gzclose.c | 0 third_party/{zlib-1.3 => zlib-1.3.1}/gzguts.h | 8 +- third_party/{zlib-1.3 => zlib-1.3.1}/gzlib.c | 12 +- third_party/{zlib-1.3 => zlib-1.3.1}/gzread.c | 0 .../{zlib-1.3 => zlib-1.3.1}/gzwrite.c | 0 .../{zlib-1.3 => zlib-1.3.1}/infback.c | 0 .../{zlib-1.3 => zlib-1.3.1}/inffast.c | 0 .../{zlib-1.3 => zlib-1.3.1}/inffast.h | 0 .../{zlib-1.3 => zlib-1.3.1}/inffixed.h | 0 .../{zlib-1.3 => zlib-1.3.1}/inflate.c | 2 +- .../{zlib-1.3 => zlib-1.3.1}/inflate.h | 0 .../{zlib-1.3 => zlib-1.3.1}/inftrees.c | 6 +- .../{zlib-1.3 => zlib-1.3.1}/inftrees.h | 4 +- .../{zlib-1.3 => zlib-1.3.1}/make_vms.com | 0 .../msdos/Makefile.bor | 0 .../msdos/Makefile.dj2 | 0 .../msdos/Makefile.emx | 0 .../msdos/Makefile.msc | 0 .../msdos/Makefile.tc | 0 .../nintendods/Makefile | 0 .../nintendods/README | 0 .../{zlib-1.3 => zlib-1.3.1}/old/Makefile.emx | 0 .../old/Makefile.riscos | 0 .../{zlib-1.3 => zlib-1.3.1}/old/README | 0 .../{zlib-1.3 => zlib-1.3.1}/old/descrip.mms | 0 .../old/os2/Makefile.os2 | 0 .../{zlib-1.3 => zlib-1.3.1}/old/os2/zlib.def | 0 .../old/visual-basic.txt | 2 +- .../{zlib-1.3 => zlib-1.3.1}/os400/README400 | 2 +- .../{zlib-1.3 => zlib-1.3.1}/os400/bndsrc | 0 .../{zlib-1.3 => zlib-1.3.1}/os400/make.sh | 0 .../{zlib-1.3 => zlib-1.3.1}/os400/zlib.inc | 6 +- .../{zlib-1.3 => zlib-1.3.1}/qnx/package.qpg | 10 +- .../{zlib-1.3 => zlib-1.3.1}/test/example.c | 25 +- .../{zlib-1.3 => zlib-1.3.1}/test/infcover.c | 0 .../{zlib-1.3 => zlib-1.3.1}/test/minigzip.c | 32 +- .../{zlib-1.3 => zlib-1.3.1}/treebuild.xml | 4 +- third_party/{zlib-1.3 => zlib-1.3.1}/trees.c | 20 +- third_party/{zlib-1.3 => zlib-1.3.1}/trees.h | 0 .../{zlib-1.3 => zlib-1.3.1}/uncompr.c | 0 .../watcom/watcom_f.mak | 0 .../watcom/watcom_l.mak | 0 .../win32/DLL_FAQ.txt | 20 +- .../win32/Makefile.bor | 0 .../win32/Makefile.gcc | 0 .../win32/Makefile.msc | 0 .../win32/README-WIN32.txt | 8 +- .../win32/VisualC.txt | 0 .../{zlib-1.3 => zlib-1.3.1}/win32/zlib.def | 0 .../{zlib-1.3 => zlib-1.3.1}/win32/zlib1.rc | 0 third_party/{zlib-1.3 => zlib-1.3.1}/zconf.h | 10 +- .../{zlib-1.3 => zlib-1.3.1}/zconf.h.cmakein | 10 +- .../{zlib-1.3 => zlib-1.3.1}/zconf.h.in | 10 +- third_party/{zlib-1.3 => zlib-1.3.1}/zlib.3 | 6 +- third_party/zlib-1.3.1/zlib.3.pdf | Bin 0 -> 25523 bytes third_party/{zlib-1.3 => zlib-1.3.1}/zlib.h | 22 +- third_party/{zlib-1.3 => zlib-1.3.1}/zlib.map | 0 .../{zlib-1.3 => zlib-1.3.1}/zlib.pc.cmakein | 0 .../{zlib-1.3 => zlib-1.3.1}/zlib.pc.in | 0 third_party/{zlib-1.3 => zlib-1.3.1}/zutil.c | 0 third_party/{zlib-1.3 => zlib-1.3.1}/zutil.h | 27 +- .../zlib-1.3/contrib/vstudio/vc9/zlib.rc | 32 - .../zlib-1.3/contrib/vstudio/vc9/zlibvc.def | 158 ---- third_party/zlib-1.3/zlib.3.pdf | Bin 19505 -> 0 bytes 396 files changed, 8473 insertions(+), 2941 deletions(-) delete mode 100644 devertexwahn/okapi/third_party/libwebp.BUILD delete mode 100644 devertexwahn/okapi/third_party/pugixml.BUILD create mode 100644 third_party/abseil-cpp/absl/container/hash_container_defaults.h create mode 100644 third_party/abseil-cpp/absl/status/internal/status_matchers.cc create mode 100644 third_party/abseil-cpp/absl/status/internal/status_matchers.h create mode 100644 third_party/abseil-cpp/absl/status/status_matchers.h create mode 100644 third_party/abseil-cpp/absl/status/status_matchers_test.cc create mode 100755 third_party/bazel-skylib/docs/modules_doc.md create mode 100644 third_party/bazel-skylib/lib/modules.bzl create mode 100644 third_party/bazel-skylib/tests/bzl_library/BUILD create mode 100644 third_party/bazel-skylib/tests/bzl_library/bzl_library_test.bzl create mode 100644 third_party/bazel-skylib/tests/bzl_library/testdata/a.bzl create mode 100644 third_party/bazel-skylib/tests/bzl_library/testdata/b.bzl create mode 100644 third_party/bazel-skylib/tests/bzl_library/testdata/c.bzl create mode 100644 third_party/bazel-skylib/tests/modules_test.bzl rename third_party/{zlib-1.3 => zlib-1.3.1}/CMakeLists.txt (86%) rename third_party/{zlib-1.3 => zlib-1.3.1}/ChangeLog (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/FAQ (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/INDEX (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/LICENSE (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/Makefile (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/Makefile.in (96%) rename third_party/{zlib-1.3 => zlib-1.3.1}/README (96%) rename third_party/{zlib-1.3 => zlib-1.3.1}/adler32.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/amiga/Makefile.pup (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/amiga/Makefile.sas (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/compress.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/configure (99%) mode change 100644 => 100755 rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/README.contrib (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/ada/buffer_demo.adb (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/ada/mtest.adb (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/ada/read.adb (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/ada/readme.txt (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/ada/test.adb (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/ada/zlib-streams.adb (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/ada/zlib-streams.ads (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/ada/zlib-thin.adb (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/ada/zlib-thin.ads (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/ada/zlib.adb (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/ada/zlib.ads (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/ada/zlib.gpr (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/blast/Makefile (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/blast/README (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/blast/blast.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/blast/blast.h (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/blast/test.pk (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/blast/test.txt (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/delphi/ZLib.pas (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/delphi/ZLibConst.pas (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/delphi/readme.txt (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/delphi/zlibd32.mak (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/dotzlib/DotZLib.build (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/dotzlib/DotZLib.chm (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/dotzlib/DotZLib.sln (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/dotzlib/DotZLib/AssemblyInfo.cs (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/dotzlib/DotZLib/ChecksumImpl.cs (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/dotzlib/DotZLib/CircularBuffer.cs (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/dotzlib/DotZLib/CodecBase.cs (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/dotzlib/DotZLib/Deflater.cs (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/dotzlib/DotZLib/DotZLib.cs (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/dotzlib/DotZLib/DotZLib.csproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/dotzlib/DotZLib/GZipStream.cs (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/dotzlib/DotZLib/Inflater.cs (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/dotzlib/DotZLib/UnitTests.cs (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/dotzlib/LICENSE_1_0.txt (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/dotzlib/readme.txt (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/gcc_gvmat64/gvmat64.S (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/infback9/README (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/infback9/infback9.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/infback9/infback9.h (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/infback9/inffix9.h (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/infback9/inflate9.h (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/infback9/inftree9.c (98%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/infback9/inftree9.h (94%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/iostream/test.cpp (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/iostream/zfstream.cpp (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/iostream/zfstream.h (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/iostream2/zstream.h (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/iostream2/zstream_test.cpp (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/iostream3/README (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/iostream3/TODO (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/iostream3/test.cc (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/iostream3/zfstream.cc (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/iostream3/zfstream.h (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/Makefile (98%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/Makefile.am (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/MiniZip64_Changes.txt (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/MiniZip64_info.txt (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/configure.ac (93%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/crypt.h (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/ioapi.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/ioapi.h (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/iowin32.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/iowin32.h (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/make_vms.com (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/miniunz.c (96%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/miniunzip.1 (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/minizip.1 (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/minizip.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/minizip.pc.in (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/mztools.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/mztools.h (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/unzip.c (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/unzip.h (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/zip.c (98%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/minizip/zip.h (99%) create mode 100644 third_party/zlib-1.3.1/contrib/nuget/nuget.csproj create mode 100644 third_party/zlib-1.3.1/contrib/nuget/nuget.sln rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/pascal/example.pas (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/pascal/readme.txt (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/pascal/zlibd32.mak (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/pascal/zlibpas.pas (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/puff/Makefile (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/puff/README (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/puff/puff.c (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/puff/puff.h (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/puff/pufftest.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/puff/zeros.raw (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/testzlib/testzlib.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/testzlib/testzlib.txt (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/untgz/Makefile (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/untgz/Makefile.msc (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/untgz/untgz.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/readme.txt (88%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc10/miniunz.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc10/miniunz.vcxproj.filters (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc10/minizip.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc10/minizip.vcxproj.filters (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc10/testzlib.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc10/testzlib.vcxproj.filters (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc10/testzlibdll.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc10/testzlibdll.vcxproj.filters (100%) rename third_party/{zlib-1.3/contrib/vstudio/vc11 => zlib-1.3.1/contrib/vstudio/vc10}/zlib.rc (83%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc10/zlibstat.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc10/zlibstat.vcxproj.filters (100%) rename third_party/{zlib-1.3/contrib/vstudio/vc14 => zlib-1.3.1/contrib/vstudio/vc10}/zlibvc.def (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc10/zlibvc.sln (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc10/zlibvc.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc10/zlibvc.vcxproj.filters (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc11/miniunz.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc11/minizip.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc11/testzlib.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc11/testzlibdll.vcxproj (100%) rename third_party/{zlib-1.3/contrib/vstudio/vc12 => zlib-1.3.1/contrib/vstudio/vc11}/zlib.rc (83%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc11/zlibstat.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc11/zlibvc.def (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc11/zlibvc.sln (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc11/zlibvc.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc12/miniunz.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc12/minizip.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc12/testzlib.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc12/testzlibdll.vcxproj (100%) rename third_party/{zlib-1.3/contrib/vstudio/vc10 => zlib-1.3.1/contrib/vstudio/vc12}/zlib.rc (83%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc12/zlibstat.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc12/zlibvc.def (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc12/zlibvc.sln (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc12/zlibvc.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc14/miniunz.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc14/minizip.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc14/testzlib.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc14/testzlibdll.vcxproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc14/zlib.rc (83%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc14/zlibstat.vcxproj (100%) rename third_party/{zlib-1.3/contrib/vstudio/vc10 => zlib-1.3.1/contrib/vstudio/vc14}/zlibvc.def (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc14/zlibvc.sln (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc14/zlibvc.vcxproj (100%) create mode 100644 third_party/zlib-1.3.1/contrib/vstudio/vc17/miniunz.vcxproj create mode 100644 third_party/zlib-1.3.1/contrib/vstudio/vc17/minizip.vcxproj create mode 100644 third_party/zlib-1.3.1/contrib/vstudio/vc17/testzlib.vcxproj create mode 100644 third_party/zlib-1.3.1/contrib/vstudio/vc17/testzlibdll.vcxproj create mode 100644 third_party/zlib-1.3.1/contrib/vstudio/vc17/zlib.rc create mode 100644 third_party/zlib-1.3.1/contrib/vstudio/vc17/zlibstat.vcxproj create mode 100644 third_party/zlib-1.3.1/contrib/vstudio/vc17/zlibvc.def create mode 100644 third_party/zlib-1.3.1/contrib/vstudio/vc17/zlibvc.sln create mode 100644 third_party/zlib-1.3.1/contrib/vstudio/vc17/zlibvc.vcxproj rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc9/miniunz.vcproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc9/minizip.vcproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc9/testzlib.vcproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc9/testzlibdll.vcproj (100%) create mode 100644 third_party/zlib-1.3.1/contrib/vstudio/vc9/zlib.rc rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc9/zlibstat.vcproj (100%) create mode 100644 third_party/zlib-1.3.1/contrib/vstudio/vc9/zlibvc.def rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc9/zlibvc.sln (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/contrib/vstudio/vc9/zlibvc.vcproj (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/crc32.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/crc32.h (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/deflate.c (98%) rename third_party/{zlib-1.3 => zlib-1.3.1}/deflate.h (92%) rename third_party/{zlib-1.3 => zlib-1.3.1}/doc/algorithm.txt (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/doc/crc-doc.1.0.pdf (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/doc/rfc1950.txt (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/doc/rfc1951.txt (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/doc/rfc1952.txt (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/doc/txtvsbin.txt (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/examples/README.examples (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/examples/enough.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/examples/fitblk.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/examples/gun.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/examples/gzappend.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/examples/gzjoin.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/examples/gzlog.c (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/examples/gzlog.h (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/examples/gznorm.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/examples/zlib_how.html (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/examples/zpipe.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/examples/zran.c (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/examples/zran.h (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/gzclose.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/gzguts.h (96%) rename third_party/{zlib-1.3 => zlib-1.3.1}/gzlib.c (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/gzread.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/gzwrite.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/infback.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/inffast.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/inffast.h (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/inffixed.h (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/inflate.c (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/inflate.h (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/inftrees.c (98%) rename third_party/{zlib-1.3 => zlib-1.3.1}/inftrees.h (94%) rename third_party/{zlib-1.3 => zlib-1.3.1}/make_vms.com (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/msdos/Makefile.bor (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/msdos/Makefile.dj2 (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/msdos/Makefile.emx (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/msdos/Makefile.msc (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/msdos/Makefile.tc (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/nintendods/Makefile (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/nintendods/README (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/old/Makefile.emx (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/old/Makefile.riscos (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/old/README (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/old/descrip.mms (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/old/os2/Makefile.os2 (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/old/os2/zlib.def (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/old/visual-basic.txt (98%) rename third_party/{zlib-1.3 => zlib-1.3.1}/os400/README400 (96%) rename third_party/{zlib-1.3 => zlib-1.3.1}/os400/bndsrc (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/os400/make.sh (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/os400/zlib.inc (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/qnx/package.qpg (95%) rename third_party/{zlib-1.3 => zlib-1.3.1}/test/example.c (94%) rename third_party/{zlib-1.3 => zlib-1.3.1}/test/infcover.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/test/minigzip.c (94%) rename third_party/{zlib-1.3 => zlib-1.3.1}/treebuild.xml (97%) rename third_party/{zlib-1.3 => zlib-1.3.1}/trees.c (98%) rename third_party/{zlib-1.3 => zlib-1.3.1}/trees.h (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/uncompr.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/watcom/watcom_f.mak (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/watcom/watcom_l.mak (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/win32/DLL_FAQ.txt (95%) rename third_party/{zlib-1.3 => zlib-1.3.1}/win32/Makefile.bor (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/win32/Makefile.gcc (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/win32/Makefile.msc (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/win32/README-WIN32.txt (95%) rename third_party/{zlib-1.3 => zlib-1.3.1}/win32/VisualC.txt (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/win32/zlib.def (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/win32/zlib1.rc (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/zconf.h (98%) rename third_party/{zlib-1.3 => zlib-1.3.1}/zconf.h.cmakein (98%) rename third_party/{zlib-1.3 => zlib-1.3.1}/zconf.h.in (98%) rename third_party/{zlib-1.3 => zlib-1.3.1}/zlib.3 (97%) create mode 100644 third_party/zlib-1.3.1/zlib.3.pdf rename third_party/{zlib-1.3 => zlib-1.3.1}/zlib.h (99%) rename third_party/{zlib-1.3 => zlib-1.3.1}/zlib.map (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/zlib.pc.cmakein (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/zlib.pc.in (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/zutil.c (100%) rename third_party/{zlib-1.3 => zlib-1.3.1}/zutil.h (90%) delete mode 100644 third_party/zlib-1.3/contrib/vstudio/vc9/zlib.rc delete mode 100644 third_party/zlib-1.3/contrib/vstudio/vc9/zlibvc.def delete mode 100644 third_party/zlib-1.3/zlib.3.pdf diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 51c67e78..06834c7c 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -23,12 +23,12 @@ jobs: # macOS 14/M1 is still not supported on Azure Pipelines # consult documentation for Microsoft-hosted agents: # https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops&tabs=yaml - #- job: MacOSAppleClang14Sonoma - # displayName: "Apple Clang14 on macOS 14 (Sonoma)" - # pool: - # vmImage: 'macOS-14' - # steps: - # - template: devertexwahn/ci/macOS-14-apple-clang14.yaml + - job: MacOSAppleClang14Sonoma + displayName: "Apple Clang14 on macOS 14 (Sonoma)" + pool: + vmImage: 'macOS-14' + steps: + - template: devertexwahn/ci/macOS-14-apple-clang14.yaml #- job: Ubuntu20Clang14 diff --git a/devertexwahn/okapi/third_party/libwebp.BUILD b/devertexwahn/okapi/third_party/libwebp.BUILD deleted file mode 100644 index 6298bad6..00000000 --- a/devertexwahn/okapi/third_party/libwebp.BUILD +++ /dev/null @@ -1,218 +0,0 @@ -# Copied from https://skia.googlesource.com/skia/+/refs/heads/main/bazel/external/libwebp/BUILD.bazel - -# This file will be copied into //third_party/externals/libwebp via the new_local_repository -# rule in WORKSPACE.bazel, so all files should be relative to that path. -# We define this here because the emscripten toolchain calls the cpu wasm, whereas the -# bazelbuild/platforms call it wasm32. https://github.com/emscripten-core/emsdk/issues/919 -config_setting( - name = "cpu_wasm", - values = { - "cpu": "wasm", - }, -) - -WEBP_SRCS = [ - "sharpyuv/sharpyuv.c", - "sharpyuv/sharpyuv.h", - "sharpyuv/sharpyuv_cpu.c", - "sharpyuv/sharpyuv_cpu.h", - "sharpyuv/sharpyuv_csp.c", - "sharpyuv/sharpyuv_csp.h", - "sharpyuv/sharpyuv_dsp.c", - "sharpyuv/sharpyuv_dsp.h", - "sharpyuv/sharpyuv_gamma.c", - "sharpyuv/sharpyuv_gamma.h", - "sharpyuv/sharpyuv_neon.c", - "sharpyuv/sharpyuv_sse2.c", - "src/dec/alpha_dec.c", - "src/dec/alphai_dec.h", - "src/dec/buffer_dec.c", - "src/dec/common_dec.h", - "src/dec/frame_dec.c", - "src/dec/idec_dec.c", - "src/dec/io_dec.c", - "src/dec/quant_dec.c", - "src/dec/tree_dec.c", - "src/dec/vp8_dec.c", - "src/dec/vp8_dec.h", - "src/dec/vp8i_dec.h", - "src/dec/vp8l_dec.c", - "src/dec/vp8li_dec.h", - "src/dec/webp_dec.c", - "src/dec/webpi_dec.h", - "src/demux/anim_decode.c", - "src/demux/demux.c", - "src/dsp/alpha_processing.c", - "src/dsp/alpha_processing_mips_dsp_r2.c", - "src/dsp/alpha_processing_neon.c", - "src/dsp/alpha_processing_sse2.c", - "src/dsp/common_sse2.h", - "src/dsp/common_sse41.h", - "src/dsp/cost.c", - "src/dsp/cost_mips32.c", - "src/dsp/cost_mips_dsp_r2.c", - "src/dsp/cost_neon.c", - "src/dsp/cost_sse2.c", - "src/dsp/cpu.c", - "src/dsp/cpu.h", - "src/dsp/dec.c", - "src/dsp/dec_clip_tables.c", - "src/dsp/dec_mips32.c", - "src/dsp/dec_mips_dsp_r2.c", - "src/dsp/dec_msa.c", - "src/dsp/dec_neon.c", - "src/dsp/dec_sse2.c", - "src/dsp/dsp.h", - "src/dsp/enc.c", - "src/dsp/enc_mips32.c", - "src/dsp/enc_mips_dsp_r2.c", - "src/dsp/enc_msa.c", - "src/dsp/enc_neon.c", - "src/dsp/enc_sse2.c", - "src/dsp/filters.c", - "src/dsp/filters_mips_dsp_r2.c", - "src/dsp/filters_msa.c", - "src/dsp/filters_neon.c", - "src/dsp/filters_sse2.c", - "src/dsp/lossless.c", - "src/dsp/lossless.h", - "src/dsp/lossless_common.h", - "src/dsp/lossless_enc.c", - "src/dsp/lossless_enc_mips32.c", - "src/dsp/lossless_enc_mips_dsp_r2.c", - "src/dsp/lossless_enc_msa.c", - "src/dsp/lossless_enc_neon.c", - "src/dsp/lossless_enc_sse2.c", - "src/dsp/lossless_mips_dsp_r2.c", - "src/dsp/lossless_msa.c", - "src/dsp/lossless_neon.c", - "src/dsp/lossless_sse2.c", - "src/dsp/mips_macro.h", - "src/dsp/msa_macro.h", - "src/dsp/neon.h", - "src/dsp/quant.h", - "src/dsp/rescaler.c", - "src/dsp/rescaler_mips32.c", - "src/dsp/rescaler_mips_dsp_r2.c", - "src/dsp/rescaler_msa.c", - "src/dsp/rescaler_neon.c", - "src/dsp/rescaler_sse2.c", - "src/dsp/ssim.c", - "src/dsp/ssim_sse2.c", - "src/dsp/upsampling.c", - "src/dsp/upsampling_mips_dsp_r2.c", - "src/dsp/upsampling_msa.c", - "src/dsp/upsampling_neon.c", - "src/dsp/upsampling_sse2.c", - "src/dsp/yuv.c", - "src/dsp/yuv.h", - "src/dsp/yuv_mips32.c", - "src/dsp/yuv_mips_dsp_r2.c", - "src/dsp/yuv_neon.c", - "src/dsp/yuv_sse2.c", - "src/enc/alpha_enc.c", - "src/enc/analysis_enc.c", - "src/enc/backward_references_cost_enc.c", - "src/enc/backward_references_enc.c", - "src/enc/backward_references_enc.h", - "src/enc/config_enc.c", - "src/enc/cost_enc.c", - "src/enc/cost_enc.h", - "src/enc/filter_enc.c", - "src/enc/frame_enc.c", - "src/enc/histogram_enc.c", - "src/enc/histogram_enc.h", - "src/enc/iterator_enc.c", - "src/enc/near_lossless_enc.c", - "src/enc/picture_csp_enc.c", - "src/enc/picture_enc.c", - "src/enc/picture_psnr_enc.c", - "src/enc/picture_rescale_enc.c", - "src/enc/picture_tools_enc.c", - "src/enc/predictor_enc.c", - "src/enc/quant_enc.c", - "src/enc/syntax_enc.c", - "src/enc/token_enc.c", - "src/enc/tree_enc.c", - "src/enc/vp8i_enc.h", - "src/enc/vp8l_enc.c", - "src/enc/vp8li_enc.h", - "src/enc/webp_enc.c", - "src/mux/anim_encode.c", - "src/mux/animi.h", - "src/mux/muxedit.c", - "src/mux/muxi.h", - "src/mux/muxinternal.c", - "src/mux/muxread.c", - "src/utils/bit_reader_inl_utils.h", - "src/utils/bit_reader_utils.c", - "src/utils/bit_reader_utils.h", - "src/utils/bit_writer_utils.c", - "src/utils/bit_writer_utils.h", - "src/utils/color_cache_utils.c", - "src/utils/color_cache_utils.h", - "src/utils/endian_inl_utils.h", - "src/utils/filters_utils.c", - "src/utils/filters_utils.h", - "src/utils/huffman_encode_utils.c", - "src/utils/huffman_encode_utils.h", - "src/utils/huffman_utils.c", - "src/utils/huffman_utils.h", - "src/utils/quant_levels_dec_utils.c", - "src/utils/quant_levels_dec_utils.h", - "src/utils/quant_levels_utils.c", - "src/utils/quant_levels_utils.h", - "src/utils/random_utils.c", - "src/utils/random_utils.h", - "src/utils/rescaler_utils.c", - "src/utils/rescaler_utils.h", - "src/utils/thread_utils.c", - "src/utils/thread_utils.h", - "src/utils/utils.c", - "src/utils/utils.h", -] + select({ - "@platforms//cpu:x86_64": [ - "src/dsp/alpha_processing_sse41.c", - "src/dsp/dec_sse41.c", - "src/dsp/enc_sse41.c", - "src/dsp/lossless_enc_sse41.c", - "src/dsp/lossless_sse41.c", - "src/dsp/upsampling_sse41.c", - "src/dsp/yuv_sse41.c", - ], - ":cpu_wasm": [], # not sure why wasm doesn't use default - "//conditions:default": [], -}) - -WEBP_COPTS = select({ - "@platforms//os:windows": [], - "//conditions:default": ["-Wno-unused-but-set-variable"], -}) + select({ - "@platforms//cpu:x86_64": ["-msse4.1"], - ":cpu_wasm": [], # not sure why wasm doesn't use default - "//conditions:default": [], -}) - -WEBP_DEFINES = [ - # TODO(scroggo): swizzle ourself in SkWebpCodec instead of requiring this non-standard libwebp. - "WEBP_SWAP_16BIT_CSP", -] - -cc_library( - name = "libwebp", - srcs = WEBP_SRCS, - hdrs = [ - "src/webp/decode.h", - "src/webp/demux.h", - "src/webp/encode.h", - "src/webp/format_constants.h", - "src/webp/mux.h", - "src/webp/mux_types.h", - "src/webp/types.h", - ], - copts = WEBP_COPTS, - includes = ["src"], - local_defines = WEBP_DEFINES, - textual_hdrs = ["src/dsp/cpu.c"], - visibility = ["//visibility:public"], -) diff --git a/devertexwahn/okapi/third_party/pugixml.BUILD b/devertexwahn/okapi/third_party/pugixml.BUILD deleted file mode 100644 index 0a299420..00000000 --- a/devertexwahn/okapi/third_party/pugixml.BUILD +++ /dev/null @@ -1,16 +0,0 @@ -""" - SPDX-FileCopyrightText: Copyright 2022-2023 Julian Amann - SPDX-License-Identifier: Apache-2.0 -""" - -cc_library( - name = "pugixml", - srcs = [ - "src/pugiconfig.hpp", - "src/pugixml.cpp", - ], - hdrs = ["src/pugixml.hpp"], - includes = ["src/"], - strip_include_prefix = "src", - visibility = ["//visibility:public"], -) diff --git a/third_party/Catch2/CMake/CatchMiscFunctions.cmake b/third_party/Catch2/CMake/CatchMiscFunctions.cmake index 84bd7cc7..05bc83c0 100644 --- a/third_party/Catch2/CMake/CatchMiscFunctions.cmake +++ b/third_party/Catch2/CMake/CatchMiscFunctions.cmake @@ -68,6 +68,7 @@ function(add_warnings_to_targets targets) "-Wmissing-noreturn" "-Wmissing-prototypes" "-Wmissing-variable-declarations" + "-Wnon-virtual-dtor" "-Wnull-dereference" "-Wold-style-cast" "-Woverloaded-virtual" diff --git a/third_party/Catch2/src/catch2/catch_tostring.cpp b/third_party/Catch2/src/catch2/catch_tostring.cpp index b0b53c5e..3f034d1a 100644 --- a/third_party/Catch2/src/catch2/catch_tostring.cpp +++ b/third_party/Catch2/src/catch2/catch_tostring.cpp @@ -239,13 +239,13 @@ std::string StringMaker::convert(unsigned char value) { return ::Catch::Detail::stringify(static_cast(value)); } -int StringMaker::precision = 5; +int StringMaker::precision = std::numeric_limits::max_digits10; std::string StringMaker::convert(float value) { return Detail::fpToString(value, precision) + 'f'; } -int StringMaker::precision = 10; +int StringMaker::precision = std::numeric_limits::max_digits10; std::string StringMaker::convert(double value) { return Detail::fpToString(value, precision); diff --git a/third_party/Catch2/src/catch2/internal/catch_decomposer.hpp b/third_party/Catch2/src/catch2/internal/catch_decomposer.hpp index 41365b70..7962c9ef 100644 --- a/third_party/Catch2/src/catch2/internal/catch_decomposer.hpp +++ b/third_party/Catch2/src/catch2/internal/catch_decomposer.hpp @@ -110,9 +110,11 @@ #ifdef __clang__ # pragma clang diagnostic push # pragma clang diagnostic ignored "-Wsign-compare" +# pragma clang diagnostic ignored "-Wnon-virtual-dtor" #elif defined __GNUC__ # pragma GCC diagnostic push # pragma GCC diagnostic ignored "-Wsign-compare" +# pragma GCC diagnostic ignored "-Wnon-virtual-dtor" #endif #if defined(CATCH_CPP20_OR_GREATER) && __has_include() diff --git a/third_party/Catch2/src/catch2/matchers/internal/catch_matchers_impl.hpp b/third_party/Catch2/src/catch2/matchers/internal/catch_matchers_impl.hpp index 2ee9f0c0..8d013fa2 100644 --- a/third_party/Catch2/src/catch2/matchers/internal/catch_matchers_impl.hpp +++ b/third_party/Catch2/src/catch2/matchers/internal/catch_matchers_impl.hpp @@ -18,6 +18,16 @@ namespace Catch { +#ifdef __clang__ +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wsign-compare" +# pragma clang diagnostic ignored "-Wnon-virtual-dtor" +#elif defined __GNUC__ +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wsign-compare" +# pragma GCC diagnostic ignored "-Wnon-virtual-dtor" +#endif + template class MatchExpr : public ITransientExpression { ArgT && m_arg; @@ -36,6 +46,13 @@ namespace Catch { } }; +#ifdef __clang__ +# pragma clang diagnostic pop +#elif defined __GNUC__ +# pragma GCC diagnostic pop +#endif + + namespace Matchers { template class MatcherBase; diff --git a/third_party/Catch2/tests/SelfTest/Baselines/automake.sw.approved.txt b/third_party/Catch2/tests/SelfTest/Baselines/automake.sw.approved.txt index 88c23e17..dbdf395c 100644 --- a/third_party/Catch2/tests/SelfTest/Baselines/automake.sw.approved.txt +++ b/third_party/Catch2/tests/SelfTest/Baselines/automake.sw.approved.txt @@ -354,7 +354,6 @@ b1! :test-result: FAIL nested sections can be skipped dynamically at runtime :test-result: PASS non streamable - with conv. op :test-result: PASS non-copyable objects -:test-result: PASS normal_cdf :test-result: PASS normal_quantile :test-result: PASS not allowed :test-result: FAIL not prints unscoped info from previous failures diff --git a/third_party/Catch2/tests/SelfTest/Baselines/automake.sw.multi.approved.txt b/third_party/Catch2/tests/SelfTest/Baselines/automake.sw.multi.approved.txt index a37b1a2b..4029ec65 100644 --- a/third_party/Catch2/tests/SelfTest/Baselines/automake.sw.multi.approved.txt +++ b/third_party/Catch2/tests/SelfTest/Baselines/automake.sw.multi.approved.txt @@ -343,7 +343,6 @@ :test-result: FAIL nested sections can be skipped dynamically at runtime :test-result: PASS non streamable - with conv. op :test-result: PASS non-copyable objects -:test-result: PASS normal_cdf :test-result: PASS normal_quantile :test-result: PASS not allowed :test-result: FAIL not prints unscoped info from previous failures diff --git a/third_party/Catch2/tests/SelfTest/Baselines/compact.sw.approved.txt b/third_party/Catch2/tests/SelfTest/Baselines/compact.sw.approved.txt index a0d83496..9363cb54 100644 --- a/third_party/Catch2/tests/SelfTest/Baselines/compact.sw.approved.txt +++ b/third_party/Catch2/tests/SelfTest/Baselines/compact.sw.approved.txt @@ -249,12 +249,22 @@ Misc.tests.cpp:: passed: x.size() > 0 for: 42 > 0 Misc.tests.cpp:: passed: x.size() > 0 for: 9 > 0 Misc.tests.cpp:: passed: x.size() > 0 for: 42 > 0 Misc.tests.cpp:: passed: x.size() > 0 for: 9 > 0 -Approx.tests.cpp:: passed: d == 1.23_a for: 1.23 == Approx( 1.23 ) -Approx.tests.cpp:: passed: d != 1.22_a for: 1.23 != Approx( 1.22 ) -Approx.tests.cpp:: passed: -d == -1.23_a for: -1.23 == Approx( -1.23 ) -Approx.tests.cpp:: passed: d == 1.2_a .epsilon(.1) for: 1.23 == Approx( 1.2 ) -Approx.tests.cpp:: passed: d != 1.2_a .epsilon(.001) for: 1.23 != Approx( 1.2 ) -Approx.tests.cpp:: passed: d == 1_a .epsilon(.3) for: 1.23 == Approx( 1.0 ) +Approx.tests.cpp:: passed: d == 1.23_a for: 1.22999999999999998 +== +Approx( 1.22999999999999998 ) +Approx.tests.cpp:: passed: d != 1.22_a for: 1.22999999999999998 +!= +Approx( 1.21999999999999997 ) +Approx.tests.cpp:: passed: -d == -1.23_a for: -1.22999999999999998 +== +Approx( -1.22999999999999998 ) +Approx.tests.cpp:: passed: d == 1.2_a .epsilon(.1) for: 1.22999999999999998 +== +Approx( 1.19999999999999996 ) +Approx.tests.cpp:: passed: d != 1.2_a .epsilon(.001) for: 1.22999999999999998 +!= +Approx( 1.19999999999999996 ) +Approx.tests.cpp:: passed: d == 1_a .epsilon(.3) for: 1.22999999999999998 == Approx( 1.0 ) Misc.tests.cpp:: passed: with 1 message: 'that's not flying - that's failing in style' Misc.tests.cpp:: failed: explicitly with 1 message: 'to infinity and beyond' Tricky.tests.cpp:: failed: &o1 == &o2 for: 0x == 0x @@ -263,8 +273,8 @@ Approx.tests.cpp:: passed: 104.0 != Approx(100.0) for: 104.0 != App Approx.tests.cpp:: passed: 104.0 == Approx(100.0).margin(5) for: 104.0 == Approx( 100.0 ) Approx.tests.cpp:: passed: 104.0 == Approx(100.0).margin(4) for: 104.0 == Approx( 100.0 ) Approx.tests.cpp:: passed: 104.0 != Approx(100.0).margin(3) for: 104.0 != Approx( 100.0 ) -Approx.tests.cpp:: passed: 100.3 != Approx(100.0) for: 100.3 != Approx( 100.0 ) -Approx.tests.cpp:: passed: 100.3 == Approx(100.0).margin(0.5) for: 100.3 == Approx( 100.0 ) +Approx.tests.cpp:: passed: 100.3 != Approx(100.0) for: 100.29999999999999716 != Approx( 100.0 ) +Approx.tests.cpp:: passed: 100.3 == Approx(100.0).margin(0.5) for: 100.29999999999999716 == Approx( 100.0 ) Tricky.tests.cpp:: passed: i++ == 7 for: 7 == 7 Tricky.tests.cpp:: passed: i++ == 8 for: 8 == 8 Exception.tests.cpp:: passed: 1 == 1 @@ -282,19 +292,33 @@ Approx.tests.cpp:: passed: 0.0f == Approx(0.25f).margin(0.25f) for: Approx.tests.cpp:: passed: 0.5f == Approx(0.25f).margin(0.25f) for: 0.5f == Approx( 0.25 ) Approx.tests.cpp:: passed: 245.0f == Approx(245.25f).margin(0.25f) for: 245.0f == Approx( 245.25 ) Approx.tests.cpp:: passed: 245.5f == Approx(245.25f).margin(0.25f) for: 245.5f == Approx( 245.25 ) -Approx.tests.cpp:: passed: divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) for: 3.1428571429 == Approx( 3.141 ) -Approx.tests.cpp:: passed: divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) for: 3.1428571429 != Approx( 3.141 ) -Approx.tests.cpp:: passed: d != Approx( 1.231 ) for: 1.23 != Approx( 1.231 ) -Approx.tests.cpp:: passed: d == Approx( 1.231 ).epsilon( 0.1 ) for: 1.23 == Approx( 1.231 ) -Approx.tests.cpp:: passed: 1.23f == Approx( 1.23f ) for: 1.23f == Approx( 1.2300000191 ) +Approx.tests.cpp:: passed: divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) for: 3.14285714285714279 +== +Approx( 3.14100000000000001 ) +Approx.tests.cpp:: passed: divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) for: 3.14285714285714279 +!= +Approx( 3.14100000000000001 ) +Approx.tests.cpp:: passed: d != Approx( 1.231 ) for: 1.22999999999999998 +!= +Approx( 1.23100000000000009 ) +Approx.tests.cpp:: passed: d == Approx( 1.231 ).epsilon( 0.1 ) for: 1.22999999999999998 +== +Approx( 1.23100000000000009 ) +Approx.tests.cpp:: passed: 1.23f == Approx( 1.23f ) for: 1.230000019f +== +Approx( 1.23000001907348633 ) Approx.tests.cpp:: passed: 0.0f == Approx( 0.0f ) for: 0.0f == Approx( 0.0 ) Approx.tests.cpp:: passed: 1 == Approx( 1 ) for: 1 == Approx( 1.0 ) Approx.tests.cpp:: passed: 0 == Approx( 0 ) for: 0 == Approx( 0.0 ) Approx.tests.cpp:: passed: 1.0f == Approx( 1 ) for: 1.0f == Approx( 1.0 ) Approx.tests.cpp:: passed: 0 == Approx( dZero) for: 0 == Approx( 0.0 ) Approx.tests.cpp:: passed: 0 == Approx( dSmall ).margin( 0.001 ) for: 0 == Approx( 0.00001 ) -Approx.tests.cpp:: passed: 1.234f == Approx( dMedium ) for: 1.234f == Approx( 1.234 ) -Approx.tests.cpp:: passed: dMedium == Approx( 1.234f ) for: 1.234 == Approx( 1.2339999676 ) +Approx.tests.cpp:: passed: 1.234f == Approx( dMedium ) for: 1.233999968f +== +Approx( 1.23399999999999999 ) +Approx.tests.cpp:: passed: dMedium == Approx( 1.234f ) for: 1.23399999999999999 +== +Approx( 1.23399996757507324 ) Matchers.tests.cpp:: passed: 1, Predicate( alwaysTrue, "always true" ) for: 1 matches predicate: "always true" Matchers.tests.cpp:: passed: 1, !Predicate( alwaysFalse, "always false" ) for: 1 not matches predicate: "always false" Matchers.tests.cpp:: passed: "Hello olleH", Predicate( []( std::string const& str ) -> bool { return str.front() == str.back(); }, "First and last character should be equal" ) for: "Hello olleH" matches predicate: "First and last character should be equal" @@ -509,7 +533,7 @@ Stream.tests.cpp:: passed: Catch::makeStream( "-" )->isConsole() fo Exception.tests.cpp:: failed: unexpected exception with message: 'custom exception - not std'; expression was: throwCustom() Exception.tests.cpp:: failed: unexpected exception with message: 'custom exception - not std'; expression was: throwCustom(), std::exception Exception.tests.cpp:: failed: unexpected exception with message: 'custom std exception' -Approx.tests.cpp:: passed: 101.000001 != Approx(100).epsilon(0.01) for: 101.000001 != Approx( 100.0 ) +Approx.tests.cpp:: passed: 101.000001 != Approx(100).epsilon(0.01) for: 101.00000099999999748 != Approx( 100.0 ) Approx.tests.cpp:: passed: std::pow(10, -5) != Approx(std::pow(10, -7)) for: 0.00001 != Approx( 0.0000001 ) ToString.tests.cpp:: passed: enumInfo->lookup(0) == "Value1" for: Value1 == "Value1" ToString.tests.cpp:: passed: enumInfo->lookup(1) == "Value2" for: Value2 == "Value2" @@ -529,27 +553,39 @@ EnumToString.tests.cpp:: passed: stringify( EnumClass3::Value4 ) == EnumToString.tests.cpp:: passed: stringify( ec3 ) == "Value2" for: "Value2" == "Value2" EnumToString.tests.cpp:: passed: stringify( Bikeshed::Colours::Red ) == "Red" for: "Red" == "Red" EnumToString.tests.cpp:: passed: stringify( Bikeshed::Colours::Blue ) == "Blue" for: "Blue" == "Blue" -Approx.tests.cpp:: passed: 101.01 != Approx(100).epsilon(0.01) for: 101.01 != Approx( 100.0 ) +Approx.tests.cpp:: passed: 101.01 != Approx(100).epsilon(0.01) for: 101.01000000000000512 != Approx( 100.0 ) Condition.tests.cpp:: failed: data.int_seven == 6 for: 7 == 6 Condition.tests.cpp:: failed: data.int_seven == 8 for: 7 == 8 Condition.tests.cpp:: failed: data.int_seven == 0 for: 7 == 0 -Condition.tests.cpp:: failed: data.float_nine_point_one == Approx( 9.11f ) for: 9.1f == Approx( 9.1099996567 ) -Condition.tests.cpp:: failed: data.float_nine_point_one == Approx( 9.0f ) for: 9.1f == Approx( 9.0 ) -Condition.tests.cpp:: failed: data.float_nine_point_one == Approx( 1 ) for: 9.1f == Approx( 1.0 ) -Condition.tests.cpp:: failed: data.float_nine_point_one == Approx( 0 ) for: 9.1f == Approx( 0.0 ) -Condition.tests.cpp:: failed: data.double_pi == Approx( 3.1415 ) for: 3.1415926535 == Approx( 3.1415 ) +Condition.tests.cpp:: failed: data.float_nine_point_one == Approx( 9.11f ) for: 9.100000381f +== +Approx( 9.10999965667724609 ) +Condition.tests.cpp:: failed: data.float_nine_point_one == Approx( 9.0f ) for: 9.100000381f == Approx( 9.0 ) +Condition.tests.cpp:: failed: data.float_nine_point_one == Approx( 1 ) for: 9.100000381f == Approx( 1.0 ) +Condition.tests.cpp:: failed: data.float_nine_point_one == Approx( 0 ) for: 9.100000381f == Approx( 0.0 ) +Condition.tests.cpp:: failed: data.double_pi == Approx( 3.1415 ) for: 3.14159265350000005 +== +Approx( 3.14150000000000018 ) Condition.tests.cpp:: failed: data.str_hello == "goodbye" for: "hello" == "goodbye" Condition.tests.cpp:: failed: data.str_hello == "hell" for: "hello" == "hell" Condition.tests.cpp:: failed: data.str_hello == "hello1" for: "hello" == "hello1" Condition.tests.cpp:: failed: data.str_hello.size() == 6 for: 5 == 6 -Condition.tests.cpp:: failed: x == Approx( 1.301 ) for: 1.3 == Approx( 1.301 ) +Condition.tests.cpp:: failed: x == Approx( 1.301 ) for: 1.30000000000000027 +== +Approx( 1.30099999999999993 ) Condition.tests.cpp:: passed: data.int_seven == 7 for: 7 == 7 -Condition.tests.cpp:: passed: data.float_nine_point_one == Approx( 9.1f ) for: 9.1f == Approx( 9.1000003815 ) -Condition.tests.cpp:: passed: data.double_pi == Approx( 3.1415926535 ) for: 3.1415926535 == Approx( 3.1415926535 ) +Condition.tests.cpp:: passed: data.float_nine_point_one == Approx( 9.1f ) for: 9.100000381f +== +Approx( 9.10000038146972656 ) +Condition.tests.cpp:: passed: data.double_pi == Approx( 3.1415926535 ) for: 3.14159265350000005 +== +Approx( 3.14159265350000005 ) Condition.tests.cpp:: passed: data.str_hello == "hello" for: "hello" == "hello" Condition.tests.cpp:: passed: "hello" == data.str_hello for: "hello" == "hello" Condition.tests.cpp:: passed: data.str_hello.size() == 5 for: 5 == 5 -Condition.tests.cpp:: passed: x == Approx( 1.3 ) for: 1.3 == Approx( 1.3 ) +Condition.tests.cpp:: passed: x == Approx( 1.3 ) for: 1.30000000000000027 +== +Approx( 1.30000000000000004 ) Matchers.tests.cpp:: passed: testStringForMatching(), Equals( "this string contains 'abc' as a substring" ) for: "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" Matchers.tests.cpp:: passed: testStringForMatching(), Equals( "this string contains 'ABC' as a substring", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" (case insensitive) Matchers.tests.cpp:: failed: testStringForMatching(), Equals( "this string contains 'ABC' as a substring" ) for: "this string contains 'abc' as a substring" equals: "this string contains 'ABC' as a substring" @@ -596,21 +632,21 @@ Misc.tests.cpp:: passed: Factorial(2) == 2 for: 2 == 2 Misc.tests.cpp:: passed: Factorial(3) == 6 for: 6 == 6 Misc.tests.cpp:: passed: Factorial(10) == 3628800 for: 3628800 (0x) == 3628800 (0x) GeneratorsImpl.tests.cpp:: passed: filter( []( int ) { return false; }, value( 3 ) ), Catch::GeneratorException -Matchers.tests.cpp:: passed: 10., WithinRel( 11.1, 0.1 ) for: 10.0 and 11.1 are within 10% of each other -Matchers.tests.cpp:: passed: 10., !WithinRel( 11.2, 0.1 ) for: 10.0 not and 11.2 are within 10% of each other +Matchers.tests.cpp:: passed: 10., WithinRel( 11.1, 0.1 ) for: 10.0 and 11.09999999999999964 are within 10% of each other +Matchers.tests.cpp:: passed: 10., !WithinRel( 11.2, 0.1 ) for: 10.0 not and 11.19999999999999929 are within 10% of each other Matchers.tests.cpp:: passed: 1., !WithinRel( 0., 0.99 ) for: 1.0 not and 0.0 are within 99% of each other Matchers.tests.cpp:: passed: -0., WithinRel( 0. ) for: -0.0 and 0.0 are within 2.22045e-12% of each other Matchers.tests.cpp:: passed: v1, WithinRel( v2 ) for: 0.0 and 0.0 are within 2.22045e-12% of each other Matchers.tests.cpp:: passed: 1., WithinAbs( 1., 0 ) for: 1.0 is within 0.0 of 1.0 Matchers.tests.cpp:: passed: 0., WithinAbs( 1., 1 ) for: 0.0 is within 1.0 of 1.0 -Matchers.tests.cpp:: passed: 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.99 of 1.0 -Matchers.tests.cpp:: passed: 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.99 of 1.0 +Matchers.tests.cpp:: passed: 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.98999999999999999 of 1.0 +Matchers.tests.cpp:: passed: 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.98999999999999999 of 1.0 Matchers.tests.cpp:: passed: 11., !WithinAbs( 10., 0.5 ) for: 11.0 not is within 0.5 of 10.0 Matchers.tests.cpp:: passed: 10., !WithinAbs( 11., 0.5 ) for: 10.0 not is within 0.5 of 11.0 Matchers.tests.cpp:: passed: -10., WithinAbs( -10., 0.5 ) for: -10.0 is within 0.5 of -10.0 -Matchers.tests.cpp:: passed: -10., WithinAbs( -9.6, 0.5 ) for: -10.0 is within 0.5 of -9.6 +Matchers.tests.cpp:: passed: -10., WithinAbs( -9.6, 0.5 ) for: -10.0 is within 0.5 of -9.59999999999999964 Matchers.tests.cpp:: passed: 1., WithinULP( 1., 0 ) for: 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00]) -Matchers.tests.cpp:: passed: nextafter( 1., 2. ), WithinULP( 1., 1 ) for: 1.0 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00]) +Matchers.tests.cpp:: passed: nextafter( 1., 2. ), WithinULP( 1., 1 ) for: 1.00000000000000022 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00]) Matchers.tests.cpp:: passed: 0., WithinULP( nextafter( 0., 1. ), 1 ) for: 0.0 is within 1 ULPs of 4.9406564584124654e-324 ([0.0000000000000000e+00, 9.8813129168249309e-324]) Matchers.tests.cpp:: passed: 1., WithinULP( nextafter( 1., 0. ), 1 ) for: 1.0 is within 1 ULPs of 9.9999999999999989e-01 ([9.9999999999999978e-01, 1.0000000000000000e+00]) Matchers.tests.cpp:: passed: 1., !WithinULP( nextafter( 1., 2. ), 0 ) for: 1.0 not is within 0 ULPs of 1.0000000000000002e+00 ([1.0000000000000002e+00, 1.0000000000000002e+00]) @@ -626,23 +662,23 @@ Matchers.tests.cpp:: passed: WithinRel( 1., 0. ) Matchers.tests.cpp:: passed: WithinRel( 1., -0.2 ), std::domain_error Matchers.tests.cpp:: passed: WithinRel( 1., 1. ), std::domain_error Matchers.tests.cpp:: passed: 1., !IsNaN() for: 1.0 not is NaN -Matchers.tests.cpp:: passed: 10.f, WithinRel( 11.1f, 0.1f ) for: 10.0f and 11.1000003815 are within 10% of each other -Matchers.tests.cpp:: passed: 10.f, !WithinRel( 11.2f, 0.1f ) for: 10.0f not and 11.1999998093 are within 10% of each other +Matchers.tests.cpp:: passed: 10.f, WithinRel( 11.1f, 0.1f ) for: 10.0f and 11.10000038146972656 are within 10% of each other +Matchers.tests.cpp:: passed: 10.f, !WithinRel( 11.2f, 0.1f ) for: 10.0f not and 11.19999980926513672 are within 10% of each other Matchers.tests.cpp:: passed: 1.f, !WithinRel( 0.f, 0.99f ) for: 1.0f not and 0.0 are within 99% of each other Matchers.tests.cpp:: passed: -0.f, WithinRel( 0.f ) for: -0.0f and 0.0 are within 0.00119209% of each other Matchers.tests.cpp:: passed: v1, WithinRel( v2 ) for: 0.0f and 0.0 are within 0.00119209% of each other Matchers.tests.cpp:: passed: 1.f, WithinAbs( 1.f, 0 ) for: 1.0f is within 0.0 of 1.0 Matchers.tests.cpp:: passed: 0.f, WithinAbs( 1.f, 1 ) for: 0.0f is within 1.0 of 1.0 -Matchers.tests.cpp:: passed: 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.9900000095 of 1.0 -Matchers.tests.cpp:: passed: 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.9900000095 of 1.0 +Matchers.tests.cpp:: passed: 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.99000000953674316 of 1.0 +Matchers.tests.cpp:: passed: 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.99000000953674316 of 1.0 Matchers.tests.cpp:: passed: 0.f, WithinAbs( -0.f, 0 ) for: 0.0f is within 0.0 of -0.0 Matchers.tests.cpp:: passed: 11.f, !WithinAbs( 10.f, 0.5f ) for: 11.0f not is within 0.5 of 10.0 Matchers.tests.cpp:: passed: 10.f, !WithinAbs( 11.f, 0.5f ) for: 10.0f not is within 0.5 of 11.0 Matchers.tests.cpp:: passed: -10.f, WithinAbs( -10.f, 0.5f ) for: -10.0f is within 0.5 of -10.0 -Matchers.tests.cpp:: passed: -10.f, WithinAbs( -9.6f, 0.5f ) for: -10.0f is within 0.5 of -9.6000003815 +Matchers.tests.cpp:: passed: -10.f, WithinAbs( -9.6f, 0.5f ) for: -10.0f is within 0.5 of -9.60000038146972656 Matchers.tests.cpp:: passed: 1.f, WithinULP( 1.f, 0 ) for: 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) Matchers.tests.cpp:: passed: -1.f, WithinULP( -1.f, 0 ) for: -1.0f is within 0 ULPs of -1.00000000e+00f ([-1.00000000e+00, -1.00000000e+00]) -Matchers.tests.cpp:: passed: nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) for: 1.0f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) +Matchers.tests.cpp:: passed: nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) for: 1.000000119f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) Matchers.tests.cpp:: passed: 0.f, WithinULP( nextafter( 0.f, 1.f ), 1 ) for: 0.0f is within 1 ULPs of 1.40129846e-45f ([0.00000000e+00, 2.80259693e-45]) Matchers.tests.cpp:: passed: 1.f, WithinULP( nextafter( 1.f, 0.f ), 1 ) for: 1.0f is within 1 ULPs of 9.99999940e-01f ([9.99999881e-01, 1.00000000e+00]) Matchers.tests.cpp:: passed: 1.f, !WithinULP( nextafter( 1.f, 2.f ), 0 ) for: 1.0f not is within 0 ULPs of 1.00000012e+00f ([1.00000012e+00, 1.00000012e+00]) @@ -650,7 +686,7 @@ Matchers.tests.cpp:: passed: 1.f, WithinULP( 1.f, 0 ) for: 1.0f is Matchers.tests.cpp:: passed: -0.f, WithinULP( 0.f, 0 ) for: -0.0f is within 0 ULPs of 0.00000000e+00f ([0.00000000e+00, 0.00000000e+00]) Matchers.tests.cpp:: passed: 1.f, WithinAbs( 1.f, 0.5 ) || WithinULP( 1.f, 1 ) for: 1.0f ( is within 0.5 of 1.0 or is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) ) Matchers.tests.cpp:: passed: 1.f, WithinAbs( 2.f, 0.5 ) || WithinULP( 1.f, 0 ) for: 1.0f ( is within 0.5 of 2.0 or is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) ) -Matchers.tests.cpp:: passed: 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) for: 0.0001f ( is within 0.001 of 0.0 or and 0.0 are within 10% of each other ) +Matchers.tests.cpp:: passed: 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) for: 0.0001f ( is within 0.00100000004749745 of 0.0 or and 0.0 are within 10% of each other ) Matchers.tests.cpp:: passed: WithinAbs( 1.f, 0.f ) Matchers.tests.cpp:: passed: WithinAbs( 1.f, -1.f ), std::domain_error Matchers.tests.cpp:: passed: WithinULP( 1.f, 0 ) @@ -830,68 +866,122 @@ GeneratorsImpl.tests.cpp:: passed: gen.get() == 5 for: 5 == 5 GeneratorsImpl.tests.cpp:: passed: !(gen.next()) for: !false GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -1' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.9 == Approx( -0.9 ) with 1 message: 'Current expected value is -0.9' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.90000000000000002 +== +Approx( -0.90000000000000002 ) with 1 message: 'Current expected value is -0.9' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.9' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.8 == Approx( -0.8 ) with 1 message: 'Current expected value is -0.8' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.80000000000000004 +== +Approx( -0.80000000000000004 ) with 1 message: 'Current expected value is -0.8' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.8' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.7 == Approx( -0.7 ) with 1 message: 'Current expected value is -0.7' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.70000000000000007 +== +Approx( -0.70000000000000007 ) with 1 message: 'Current expected value is -0.7' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.7' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.6 == Approx( -0.6 ) with 1 message: 'Current expected value is -0.6' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.60000000000000009 +== +Approx( -0.60000000000000009 ) with 1 message: 'Current expected value is -0.6' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.6' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.5 == Approx( -0.5 ) with 1 message: 'Current expected value is -0.5' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.50000000000000011 +== +Approx( -0.50000000000000011 ) with 1 message: 'Current expected value is -0.5' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.5' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.4 == Approx( -0.4 ) with 1 message: 'Current expected value is -0.4' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.40000000000000013 +== +Approx( -0.40000000000000013 ) with 1 message: 'Current expected value is -0.4' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.4' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.3 == Approx( -0.3 ) with 1 message: 'Current expected value is -0.3' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.30000000000000016 +== +Approx( -0.30000000000000016 ) with 1 message: 'Current expected value is -0.3' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.3' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.2 == Approx( -0.2 ) with 1 message: 'Current expected value is -0.2' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.20000000000000015 +== +Approx( -0.20000000000000015 ) with 1 message: 'Current expected value is -0.2' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.2' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.1 == Approx( -0.1 ) with 1 message: 'Current expected value is -0.1' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.10000000000000014 +== +Approx( -0.10000000000000014 ) with 1 message: 'Current expected value is -0.1' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.1' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.0 == Approx( -0.0 ) with 1 message: 'Current expected value is -1.38778e-16' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.00000000000000014 +== +Approx( -0.00000000000000014 ) with 1 message: 'Current expected value is -1.38778e-16' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -1.38778e-16' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.1 == Approx( 0.1 ) with 1 message: 'Current expected value is 0.1' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.09999999999999987 +== +Approx( 0.09999999999999987 ) with 1 message: 'Current expected value is 0.1' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.1' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.2 == Approx( 0.2 ) with 1 message: 'Current expected value is 0.2' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.19999999999999987 +== +Approx( 0.19999999999999987 ) with 1 message: 'Current expected value is 0.2' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.2' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.3 == Approx( 0.3 ) with 1 message: 'Current expected value is 0.3' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.29999999999999988 +== +Approx( 0.29999999999999988 ) with 1 message: 'Current expected value is 0.3' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.3' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.4 == Approx( 0.4 ) with 1 message: 'Current expected value is 0.4' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.39999999999999991 +== +Approx( 0.39999999999999991 ) with 1 message: 'Current expected value is 0.4' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.4' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.5 == Approx( 0.5 ) with 1 message: 'Current expected value is 0.5' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.49999999999999989 +== +Approx( 0.49999999999999989 ) with 1 message: 'Current expected value is 0.5' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.5' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.6 == Approx( 0.6 ) with 1 message: 'Current expected value is 0.6' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.59999999999999987 +== +Approx( 0.59999999999999987 ) with 1 message: 'Current expected value is 0.6' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.6' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.7 == Approx( 0.7 ) with 1 message: 'Current expected value is 0.7' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.69999999999999984 +== +Approx( 0.69999999999999984 ) with 1 message: 'Current expected value is 0.7' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.7' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.8 == Approx( 0.8 ) with 1 message: 'Current expected value is 0.8' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.79999999999999982 +== +Approx( 0.79999999999999982 ) with 1 message: 'Current expected value is 0.8' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.8' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.9 == Approx( 0.9 ) with 1 message: 'Current expected value is 0.9' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.8999999999999998 +== +Approx( 0.8999999999999998 ) with 1 message: 'Current expected value is 0.9' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.9' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx( rangeEnd ) for: 1.0 == Approx( 1.0 ) +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx( rangeEnd ) for: 0.99999999999999978 == Approx( 1.0 ) GeneratorsImpl.tests.cpp:: passed: !(gen.next()) for: !false GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -1' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.7 == Approx( -0.7 ) with 1 message: 'Current expected value is -0.7' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.69999999999999996 +== +Approx( -0.69999999999999996 ) with 1 message: 'Current expected value is -0.7' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.7' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.4 == Approx( -0.4 ) with 1 message: 'Current expected value is -0.4' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.39999999999999997 +== +Approx( -0.39999999999999997 ) with 1 message: 'Current expected value is -0.4' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.4' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.1 == Approx( -0.1 ) with 1 message: 'Current expected value is -0.1' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.09999999999999998 +== +Approx( -0.09999999999999998 ) with 1 message: 'Current expected value is -0.1' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.1' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.2 == Approx( 0.2 ) with 1 message: 'Current expected value is 0.2' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.20000000000000001 +== +Approx( 0.20000000000000001 ) with 1 message: 'Current expected value is 0.2' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.2' GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.5 == Approx( 0.5 ) with 1 message: 'Current expected value is 0.5' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.5' GeneratorsImpl.tests.cpp:: passed: !(gen.next()) for: !false GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -1' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.7 == Approx( -0.7 ) with 1 message: 'Current expected value is -0.7' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.69999999999999996 +== +Approx( -0.69999999999999996 ) with 1 message: 'Current expected value is -0.7' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.7' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.4 == Approx( -0.4 ) with 1 message: 'Current expected value is -0.4' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.39999999999999997 +== +Approx( -0.39999999999999997 ) with 1 message: 'Current expected value is -0.4' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.4' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.1 == Approx( -0.1 ) with 1 message: 'Current expected value is -0.1' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.09999999999999998 +== +Approx( -0.09999999999999998 ) with 1 message: 'Current expected value is -0.1' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.1' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.2 == Approx( 0.2 ) with 1 message: 'Current expected value is 0.2' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.20000000000000001 +== +Approx( 0.20000000000000001 ) with 1 message: 'Current expected value is 0.2' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.2' GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.5 == Approx( 0.5 ) with 1 message: 'Current expected value is 0.5' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.5' @@ -922,10 +1012,18 @@ GeneratorsImpl.tests.cpp:: passed: gen.get() == -4 for: -4 == -4 GeneratorsImpl.tests.cpp:: passed: gen.next() for: true GeneratorsImpl.tests.cpp:: passed: gen.get() == -7 for: -7 == -7 GeneratorsImpl.tests.cpp:: passed: !(gen.next()) for: !false -Approx.tests.cpp:: passed: d >= Approx( 1.22 ) for: 1.23 >= Approx( 1.22 ) -Approx.tests.cpp:: passed: d >= Approx( 1.23 ) for: 1.23 >= Approx( 1.23 ) -Approx.tests.cpp:: passed: !(d >= Approx( 1.24 )) for: !(1.23 >= Approx( 1.24 )) -Approx.tests.cpp:: passed: d >= Approx( 1.24 ).epsilon(0.1) for: 1.23 >= Approx( 1.24 ) +Approx.tests.cpp:: passed: d >= Approx( 1.22 ) for: 1.22999999999999998 +>= +Approx( 1.21999999999999997 ) +Approx.tests.cpp:: passed: d >= Approx( 1.23 ) for: 1.22999999999999998 +>= +Approx( 1.22999999999999998 ) +Approx.tests.cpp:: passed: !(d >= Approx( 1.24 )) for: !(1.22999999999999998 +>= +Approx( 1.23999999999999999 )) +Approx.tests.cpp:: passed: d >= Approx( 1.24 ).epsilon(0.1) for: 1.22999999999999998 +>= +Approx( 1.23999999999999999 ) TestCaseInfoHasher.tests.cpp:: passed: h1( dummy ) != h2( dummy ) for: 3422778688 (0x) != 130711275 (0x) @@ -964,17 +1062,25 @@ Message.tests.cpp:: passed: i < 10 for: 9 < 10 with 2 messages: 'cu Message.tests.cpp:: failed: i < 10 for: 10 < 10 with 2 messages: 'current counter 10' and 'i := 10' AssertionHandler.tests.cpp:: failed: unexpected exception with message: 'Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE'; expression was: Dummy Condition.tests.cpp:: failed: data.int_seven != 7 for: 7 != 7 -Condition.tests.cpp:: failed: data.float_nine_point_one != Approx( 9.1f ) for: 9.1f != Approx( 9.1000003815 ) -Condition.tests.cpp:: failed: data.double_pi != Approx( 3.1415926535 ) for: 3.1415926535 != Approx( 3.1415926535 ) +Condition.tests.cpp:: failed: data.float_nine_point_one != Approx( 9.1f ) for: 9.100000381f +!= +Approx( 9.10000038146972656 ) +Condition.tests.cpp:: failed: data.double_pi != Approx( 3.1415926535 ) for: 3.14159265350000005 +!= +Approx( 3.14159265350000005 ) Condition.tests.cpp:: failed: data.str_hello != "hello" for: "hello" != "hello" Condition.tests.cpp:: failed: data.str_hello.size() != 5 for: 5 != 5 Condition.tests.cpp:: passed: data.int_seven != 6 for: 7 != 6 Condition.tests.cpp:: passed: data.int_seven != 8 for: 7 != 8 -Condition.tests.cpp:: passed: data.float_nine_point_one != Approx( 9.11f ) for: 9.1f != Approx( 9.1099996567 ) -Condition.tests.cpp:: passed: data.float_nine_point_one != Approx( 9.0f ) for: 9.1f != Approx( 9.0 ) -Condition.tests.cpp:: passed: data.float_nine_point_one != Approx( 1 ) for: 9.1f != Approx( 1.0 ) -Condition.tests.cpp:: passed: data.float_nine_point_one != Approx( 0 ) for: 9.1f != Approx( 0.0 ) -Condition.tests.cpp:: passed: data.double_pi != Approx( 3.1415 ) for: 3.1415926535 != Approx( 3.1415 ) +Condition.tests.cpp:: passed: data.float_nine_point_one != Approx( 9.11f ) for: 9.100000381f +!= +Approx( 9.10999965667724609 ) +Condition.tests.cpp:: passed: data.float_nine_point_one != Approx( 9.0f ) for: 9.100000381f != Approx( 9.0 ) +Condition.tests.cpp:: passed: data.float_nine_point_one != Approx( 1 ) for: 9.100000381f != Approx( 1.0 ) +Condition.tests.cpp:: passed: data.float_nine_point_one != Approx( 0 ) for: 9.100000381f != Approx( 0.0 ) +Condition.tests.cpp:: passed: data.double_pi != Approx( 3.1415 ) for: 3.14159265350000005 +!= +Approx( 3.14150000000000018 ) Condition.tests.cpp:: passed: data.str_hello != "goodbye" for: "hello" != "goodbye" Condition.tests.cpp:: passed: data.str_hello != "hell" for: "hello" != "hell" Condition.tests.cpp:: passed: data.str_hello != "hello1" for: "hello" != "hello1" @@ -1065,10 +1171,18 @@ Json.tests.cpp:: passed: sstream.str() == "\"\\r\"" for: ""\r"" == Json.tests.cpp:: passed: sstream.str() == "\"\\t\"" for: ""\t"" == ""\t"" Json.tests.cpp:: passed: sstream.str() == "\"\\\\/\\t\\r\\n\"" for: ""\\/\t\r\n"" == ""\\/\t\r\n"" Compilation.tests.cpp:: passed: []() { return true; }() for: true -Approx.tests.cpp:: passed: d <= Approx( 1.24 ) for: 1.23 <= Approx( 1.24 ) -Approx.tests.cpp:: passed: d <= Approx( 1.23 ) for: 1.23 <= Approx( 1.23 ) -Approx.tests.cpp:: passed: !(d <= Approx( 1.22 )) for: !(1.23 <= Approx( 1.22 )) -Approx.tests.cpp:: passed: d <= Approx( 1.22 ).epsilon(0.1) for: 1.23 <= Approx( 1.22 ) +Approx.tests.cpp:: passed: d <= Approx( 1.24 ) for: 1.22999999999999998 +<= +Approx( 1.23999999999999999 ) +Approx.tests.cpp:: passed: d <= Approx( 1.23 ) for: 1.22999999999999998 +<= +Approx( 1.22999999999999998 ) +Approx.tests.cpp:: passed: !(d <= Approx( 1.22 )) for: !(1.22999999999999998 +<= +Approx( 1.21999999999999997 )) +Approx.tests.cpp:: passed: d <= Approx( 1.22 ).epsilon(0.1) for: 1.22999999999999998 +<= +Approx( 1.21999999999999997 ) Misc.tests.cpp:: passed: with 1 message: 'was called' Matchers.tests.cpp:: passed: testStringForMatching(), ContainsSubstring( "string" ) && ContainsSubstring( "abc" ) && ContainsSubstring( "substring" ) && ContainsSubstring( "contains" ) for: "this string contains 'abc' as a substring" ( contains: "string" and contains: "abc" and contains: "substring" and contains: "contains" ) Matchers.tests.cpp:: passed: testStringForMatching(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) for: "this string contains 'abc' as a substring" ( contains: "string" or contains: "different" or contains: "random" ) @@ -1135,9 +1249,9 @@ Condition.tests.cpp:: failed: data.int_seven < 0 for: 7 < 0 Condition.tests.cpp:: failed: data.int_seven < -1 for: 7 < -1 Condition.tests.cpp:: failed: data.int_seven >= 8 for: 7 >= 8 Condition.tests.cpp:: failed: data.int_seven <= 6 for: 7 <= 6 -Condition.tests.cpp:: failed: data.float_nine_point_one < 9 for: 9.1f < 9 -Condition.tests.cpp:: failed: data.float_nine_point_one > 10 for: 9.1f > 10 -Condition.tests.cpp:: failed: data.float_nine_point_one > 9.2 for: 9.1f > 9.2 +Condition.tests.cpp:: failed: data.float_nine_point_one < 9 for: 9.100000381f < 9 +Condition.tests.cpp:: failed: data.float_nine_point_one > 10 for: 9.100000381f > 10 +Condition.tests.cpp:: failed: data.float_nine_point_one > 9.2 for: 9.100000381f > 9.19999999999999929 Condition.tests.cpp:: failed: data.str_hello > "hello" for: "hello" > "hello" Condition.tests.cpp:: failed: data.str_hello < "hello" for: "hello" < "hello" Condition.tests.cpp:: failed: data.str_hello > "hellp" for: "hello" > "hellp" @@ -1154,9 +1268,9 @@ Condition.tests.cpp:: passed: data.int_seven >= 7 for: 7 >= 7 Condition.tests.cpp:: passed: data.int_seven >= 6 for: 7 >= 6 Condition.tests.cpp:: passed: data.int_seven <= 7 for: 7 <= 7 Condition.tests.cpp:: passed: data.int_seven <= 8 for: 7 <= 8 -Condition.tests.cpp:: passed: data.float_nine_point_one > 9 for: 9.1f > 9 -Condition.tests.cpp:: passed: data.float_nine_point_one < 10 for: 9.1f < 10 -Condition.tests.cpp:: passed: data.float_nine_point_one < 9.2 for: 9.1f < 9.2 +Condition.tests.cpp:: passed: data.float_nine_point_one > 9 for: 9.100000381f > 9 +Condition.tests.cpp:: passed: data.float_nine_point_one < 10 for: 9.100000381f < 10 +Condition.tests.cpp:: passed: data.float_nine_point_one < 9.2 for: 9.100000381f < 9.19999999999999929 Condition.tests.cpp:: passed: data.str_hello <= "hello" for: "hello" <= "hello" Condition.tests.cpp:: passed: data.str_hello >= "hello" for: "hello" >= "hello" Condition.tests.cpp:: passed: data.str_hello < "hellp" for: "hello" < "hellp" @@ -1354,7 +1468,9 @@ CmdLine.tests.cpp:: passed: config.benchmarkSamples == 200 for: 200 CmdLine.tests.cpp:: passed: cli.parse({ "test", "--benchmark-resamples=20000" }) for: {?} CmdLine.tests.cpp:: passed: config.benchmarkResamples == 20000 for: 20000 (0x) == 20000 (0x) CmdLine.tests.cpp:: passed: cli.parse({ "test", "--benchmark-confidence-interval=0.99" }) for: {?} -CmdLine.tests.cpp:: passed: config.benchmarkConfidenceInterval == Catch::Approx(0.99) for: 0.99 == Approx( 0.99 ) +CmdLine.tests.cpp:: passed: config.benchmarkConfidenceInterval == Catch::Approx(0.99) for: 0.98999999999999999 +== +Approx( 0.98999999999999999 ) CmdLine.tests.cpp:: passed: cli.parse({ "test", "--benchmark-no-analysis" }) for: {?} CmdLine.tests.cpp:: passed: config.benchmarkNoAnalysis for: true CmdLine.tests.cpp:: passed: cli.parse({ "test", "--benchmark-warmup-time=10" }) for: {?} @@ -1609,14 +1725,30 @@ BDD.tests.cpp:: passed: v.size() == 0 for: 0 == 0 A string sent directly to stdout A string sent directly to stderr A string sent to stderr via clog -Approx.tests.cpp:: passed: d == Approx( 1.23 ) for: 1.23 == Approx( 1.23 ) -Approx.tests.cpp:: passed: d != Approx( 1.22 ) for: 1.23 != Approx( 1.22 ) -Approx.tests.cpp:: passed: d != Approx( 1.24 ) for: 1.23 != Approx( 1.24 ) -Approx.tests.cpp:: passed: d == 1.23_a for: 1.23 == Approx( 1.23 ) -Approx.tests.cpp:: passed: d != 1.22_a for: 1.23 != Approx( 1.22 ) -Approx.tests.cpp:: passed: Approx( d ) == 1.23 for: Approx( 1.23 ) == 1.23 -Approx.tests.cpp:: passed: Approx( d ) != 1.22 for: Approx( 1.23 ) != 1.22 -Approx.tests.cpp:: passed: Approx( d ) != 1.24 for: Approx( 1.23 ) != 1.24 +Approx.tests.cpp:: passed: d == Approx( 1.23 ) for: 1.22999999999999998 +== +Approx( 1.22999999999999998 ) +Approx.tests.cpp:: passed: d != Approx( 1.22 ) for: 1.22999999999999998 +!= +Approx( 1.21999999999999997 ) +Approx.tests.cpp:: passed: d != Approx( 1.24 ) for: 1.22999999999999998 +!= +Approx( 1.23999999999999999 ) +Approx.tests.cpp:: passed: d == 1.23_a for: 1.22999999999999998 +== +Approx( 1.22999999999999998 ) +Approx.tests.cpp:: passed: d != 1.22_a for: 1.22999999999999998 +!= +Approx( 1.21999999999999997 ) +Approx.tests.cpp:: passed: Approx( d ) == 1.23 for: Approx( 1.22999999999999998 ) +== +1.22999999999999998 +Approx.tests.cpp:: passed: Approx( d ) != 1.22 for: Approx( 1.22999999999999998 ) +!= +1.21999999999999997 +Approx.tests.cpp:: passed: Approx( d ) != 1.24 for: Approx( 1.22999999999999998 ) +!= +1.23999999999999999 Message from section one Message from section two Matchers.tests.cpp:: failed: testStringForMatching(), StartsWith( "This String" ) for: "this string contains 'abc' as a substring" starts with: "This String" @@ -2025,7 +2157,7 @@ MatchersRanges.tests.cpp:: passed: a, !RangeEquals( b ) for: { 1, 2 MatchersRanges.tests.cpp:: passed: a, UnorderedRangeEquals( b ) for: { 1, 2, 3 } unordered elements are { 3, 2, 1 } MatchersRanges.tests.cpp:: passed: vector_a, RangeEquals( array_a_plus_1, close_enough ) for: { 1, 2, 3 } elements are { 2, 3, 4 } MatchersRanges.tests.cpp:: passed: vector_a, UnorderedRangeEquals( array_a_plus_1, close_enough ) for: { 1, 2, 3 } unordered elements are { 2, 3, 4 } -Exception.tests.cpp:: failed: unexpected exception with message: '3.14' +Exception.tests.cpp:: failed: unexpected exception with message: '3.14000000000000012' UniquePtr.tests.cpp:: passed: bptr->i == 3 for: 3 == 3 UniquePtr.tests.cpp:: passed: bptr->i == 3 for: 3 == 3 MatchersRanges.tests.cpp:: passed: data, AllMatch(SizeIs(5)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } all match has size == 5 @@ -2171,14 +2303,26 @@ MatchersRanges.tests.cpp:: passed: arr, !SizeIs(!Lt(3)) for: { 0, 0 MatchersRanges.tests.cpp:: passed: map, SizeIs(3) for: { {?}, {?}, {?} } has size == 3 MatchersRanges.tests.cpp:: passed: unrelated::ADL_size{}, SizeIs(12) for: {?} has size == 12 MatchersRanges.tests.cpp:: passed: has_size{}, SizeIs(13) for: {?} has size == 13 -Approx.tests.cpp:: passed: d == approx( 1.23 ) for: 1.23 == Approx( 1.23 ) -Approx.tests.cpp:: passed: d == approx( 1.22 ) for: 1.23 == Approx( 1.22 ) -Approx.tests.cpp:: passed: d == approx( 1.24 ) for: 1.23 == Approx( 1.24 ) -Approx.tests.cpp:: passed: d != approx( 1.25 ) for: 1.23 != Approx( 1.25 ) -Approx.tests.cpp:: passed: approx( d ) == 1.23 for: Approx( 1.23 ) == 1.23 -Approx.tests.cpp:: passed: approx( d ) == 1.22 for: Approx( 1.23 ) == 1.22 -Approx.tests.cpp:: passed: approx( d ) == 1.24 for: Approx( 1.23 ) == 1.24 -Approx.tests.cpp:: passed: approx( d ) != 1.25 for: Approx( 1.23 ) != 1.25 +Approx.tests.cpp:: passed: d == approx( 1.23 ) for: 1.22999999999999998 +== +Approx( 1.22999999999999998 ) +Approx.tests.cpp:: passed: d == approx( 1.22 ) for: 1.22999999999999998 +== +Approx( 1.21999999999999997 ) +Approx.tests.cpp:: passed: d == approx( 1.24 ) for: 1.22999999999999998 +== +Approx( 1.23999999999999999 ) +Approx.tests.cpp:: passed: d != approx( 1.25 ) for: 1.22999999999999998 != Approx( 1.25 ) +Approx.tests.cpp:: passed: approx( d ) == 1.23 for: Approx( 1.22999999999999998 ) +== +1.22999999999999998 +Approx.tests.cpp:: passed: approx( d ) == 1.22 for: Approx( 1.22999999999999998 ) +== +1.21999999999999997 +Approx.tests.cpp:: passed: approx( d ) == 1.24 for: Approx( 1.22999999999999998 ) +== +1.23999999999999999 +Approx.tests.cpp:: passed: approx( d ) != 1.25 for: Approx( 1.22999999999999998 ) != 1.25 VariadicMacros.tests.cpp:: passed: with 1 message: 'no assertions' Matchers.tests.cpp:: passed: empty, Approx( empty ) for: { } is approx: { } Matchers.tests.cpp:: passed: v1, Approx( v1 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 } @@ -2353,9 +2497,15 @@ Skip.tests.cpp:: skipped: 'skipping because answer = 41' Skip.tests.cpp:: passed: Skip.tests.cpp:: skipped: 'skipping because answer = 43' Tag.tests.cpp:: passed: Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo) -InternalBenchmark.tests.cpp:: passed: erfc_inv(1.103560) == Approx(-0.09203687623843015) for: -0.0920368762 == Approx( -0.0920368762 ) -InternalBenchmark.tests.cpp:: passed: erfc_inv(1.067400) == Approx(-0.05980291115763361) for: -0.0598029112 == Approx( -0.0598029112 ) -InternalBenchmark.tests.cpp:: passed: erfc_inv(0.050000) == Approx(1.38590382434967796) for: 1.3859038243 == Approx( 1.3859038243 ) +InternalBenchmark.tests.cpp:: passed: erfc_inv(1.103560) == Approx(-0.09203687623843015) for: -0.09203687623843014 +== +Approx( -0.09203687623843015 ) +InternalBenchmark.tests.cpp:: passed: erfc_inv(1.067400) == Approx(-0.05980291115763361) for: -0.05980291115763361 +== +Approx( -0.05980291115763361 ) +InternalBenchmark.tests.cpp:: passed: erfc_inv(0.050000) == Approx(1.38590382434967796) for: 1.38590382434967774 +== +Approx( 1.38590382434967796 ) InternalBenchmark.tests.cpp:: passed: res.mean.count() == rate for: 2000.0 == 2000 (0x) InternalBenchmark.tests.cpp:: passed: res.outliers.total() == 0 for: 0 == 0 Misc.tests.cpp:: passed: @@ -2432,14 +2582,15 @@ Skip.tests.cpp:: skipped: ! Tricky.tests.cpp:: passed: s == "7" for: "7" == "7" Tricky.tests.cpp:: passed: ti == typeid(int) for: {?} == {?} -InternalBenchmark.tests.cpp:: passed: normal_cdf(0.000000) == Approx(0.50000000000000000) for: 0.5 == Approx( 0.5 ) -InternalBenchmark.tests.cpp:: passed: normal_cdf(1.000000) == Approx(0.84134474606854293) for: 0.8413447461 == Approx( 0.8413447461 ) -InternalBenchmark.tests.cpp:: passed: normal_cdf(-1.000000) == Approx(0.15865525393145705) for: 0.1586552539 == Approx( 0.1586552539 ) -InternalBenchmark.tests.cpp:: passed: normal_cdf(2.809729) == Approx(0.99752083845315409) for: 0.9975208385 == Approx( 0.9975208385 ) -InternalBenchmark.tests.cpp:: passed: normal_cdf(-1.352570) == Approx(0.08809652095066035) for: 0.088096521 == Approx( 0.088096521 ) -InternalBenchmark.tests.cpp:: passed: normal_quantile(0.551780) == Approx(0.13015979861484198) for: 0.1301597986 == Approx( 0.1301597986 ) -InternalBenchmark.tests.cpp:: passed: normal_quantile(0.533700) == Approx(0.08457408802851875) for: 0.084574088 == Approx( 0.084574088 ) -InternalBenchmark.tests.cpp:: passed: normal_quantile(0.025000) == Approx(-1.95996398454005449) for: -1.9599639845 == Approx( -1.9599639845 ) +InternalBenchmark.tests.cpp:: passed: normal_quantile(0.551780) == Approx(0.13015979861484198) for: 0.13015979861484195 +== +Approx( 0.13015979861484198 ) +InternalBenchmark.tests.cpp:: passed: normal_quantile(0.533700) == Approx(0.08457408802851875) for: 0.08457408802851875 +== +Approx( 0.08457408802851875 ) +InternalBenchmark.tests.cpp:: passed: normal_quantile(0.025000) == Approx(-1.95996398454005449) for: -1.95996398454005405 +== +Approx( -1.95996398454005449 ) Misc.tests.cpp:: passed: Message.tests.cpp:: passed: true with 1 message: 'this MAY be seen only for the FIRST assertion IF info is printed for passing assertions' Message.tests.cpp:: passed: true with 1 message: 'this MAY be seen only for the SECOND assertion IF info is printed for passing assertions' @@ -2609,19 +2760,19 @@ EnumToString.tests.cpp:: passed: ::Catch::Detail::stringify(e0) == EnumToString.tests.cpp:: passed: ::Catch::Detail::stringify(e1) == "1" for: "1" == "1" ToStringTuple.tests.cpp:: passed: "{ }" == ::Catch::Detail::stringify(type{}) for: "{ }" == "{ }" ToStringTuple.tests.cpp:: passed: "{ }" == ::Catch::Detail::stringify(value) for: "{ }" == "{ }" -ToStringTuple.tests.cpp:: passed: "1.2f" == ::Catch::Detail::stringify(float(1.2)) for: "1.2f" == "1.2f" -ToStringTuple.tests.cpp:: passed: "{ 1.2f, 0 }" == ::Catch::Detail::stringify(type{1.2f,0}) for: "{ 1.2f, 0 }" == "{ 1.2f, 0 }" +ToStringTuple.tests.cpp:: passed: "1.5f" == ::Catch::Detail::stringify(float(1.5)) for: "1.5f" == "1.5f" +ToStringTuple.tests.cpp:: passed: "{ 1.5f, 0 }" == ::Catch::Detail::stringify(type{1.5f,0}) for: "{ 1.5f, 0 }" == "{ 1.5f, 0 }" ToStringTuple.tests.cpp:: passed: "{ 0 }" == ::Catch::Detail::stringify(type{0}) for: "{ 0 }" == "{ 0 }" ToStringTuple.tests.cpp:: passed: "{ \"hello\", \"world\" }" == ::Catch::Detail::stringify(type{"hello","world"}) for: "{ "hello", "world" }" == "{ "hello", "world" }" -ToStringTuple.tests.cpp:: passed: "{ { 42 }, { }, 1.2f }" == ::Catch::Detail::stringify(value) for: "{ { 42 }, { }, 1.2f }" +ToStringTuple.tests.cpp:: passed: "{ { 42 }, { }, 1.5f }" == ::Catch::Detail::stringify(value) for: "{ { 42 }, { }, 1.5f }" == -"{ { 42 }, { }, 1.2f }" +"{ { 42 }, { }, 1.5f }" InternalBenchmark.tests.cpp:: passed: e.point == 23 for: 23.0 == 23 InternalBenchmark.tests.cpp:: passed: e.upper_bound == 23 for: 23.0 == 23 InternalBenchmark.tests.cpp:: passed: e.lower_bound == 23 for: 23.0 == 23 -InternalBenchmark.tests.cpp:: passed: e.confidence_interval == 0.95 for: 0.95 == 0.95 +InternalBenchmark.tests.cpp:: passed: e.confidence_interval == 0.95 for: 0.94999999999999996 == 0.94999999999999996 RandomNumberGeneration.tests.cpp:: passed: dist.a() == -10 for: -10 == -10 RandomNumberGeneration.tests.cpp:: passed: dist.b() == 10 for: 10 == 10 UniquePtr.tests.cpp:: passed: !(ptr) for: !{?} @@ -2689,7 +2840,7 @@ InternalBenchmark.tests.cpp:: passed: med == 18. for: 18.0 == 18.0 InternalBenchmark.tests.cpp:: passed: q3 == 23. for: 23.0 == 23.0 Misc.tests.cpp:: passed: Misc.tests.cpp:: passed: -test cases: 417 | 312 passed | 85 failed | 6 skipped | 14 failed as expected -assertions: 2260 | 2079 passed | 146 failed | 35 failed as expected +test cases: 416 | 311 passed | 85 failed | 6 skipped | 14 failed as expected +assertions: 2255 | 2074 passed | 146 failed | 35 failed as expected diff --git a/third_party/Catch2/tests/SelfTest/Baselines/compact.sw.multi.approved.txt b/third_party/Catch2/tests/SelfTest/Baselines/compact.sw.multi.approved.txt index 40083820..4007dfca 100644 --- a/third_party/Catch2/tests/SelfTest/Baselines/compact.sw.multi.approved.txt +++ b/third_party/Catch2/tests/SelfTest/Baselines/compact.sw.multi.approved.txt @@ -247,12 +247,22 @@ Misc.tests.cpp:: passed: x.size() > 0 for: 42 > 0 Misc.tests.cpp:: passed: x.size() > 0 for: 9 > 0 Misc.tests.cpp:: passed: x.size() > 0 for: 42 > 0 Misc.tests.cpp:: passed: x.size() > 0 for: 9 > 0 -Approx.tests.cpp:: passed: d == 1.23_a for: 1.23 == Approx( 1.23 ) -Approx.tests.cpp:: passed: d != 1.22_a for: 1.23 != Approx( 1.22 ) -Approx.tests.cpp:: passed: -d == -1.23_a for: -1.23 == Approx( -1.23 ) -Approx.tests.cpp:: passed: d == 1.2_a .epsilon(.1) for: 1.23 == Approx( 1.2 ) -Approx.tests.cpp:: passed: d != 1.2_a .epsilon(.001) for: 1.23 != Approx( 1.2 ) -Approx.tests.cpp:: passed: d == 1_a .epsilon(.3) for: 1.23 == Approx( 1.0 ) +Approx.tests.cpp:: passed: d == 1.23_a for: 1.22999999999999998 +== +Approx( 1.22999999999999998 ) +Approx.tests.cpp:: passed: d != 1.22_a for: 1.22999999999999998 +!= +Approx( 1.21999999999999997 ) +Approx.tests.cpp:: passed: -d == -1.23_a for: -1.22999999999999998 +== +Approx( -1.22999999999999998 ) +Approx.tests.cpp:: passed: d == 1.2_a .epsilon(.1) for: 1.22999999999999998 +== +Approx( 1.19999999999999996 ) +Approx.tests.cpp:: passed: d != 1.2_a .epsilon(.001) for: 1.22999999999999998 +!= +Approx( 1.19999999999999996 ) +Approx.tests.cpp:: passed: d == 1_a .epsilon(.3) for: 1.22999999999999998 == Approx( 1.0 ) Misc.tests.cpp:: passed: with 1 message: 'that's not flying - that's failing in style' Misc.tests.cpp:: failed: explicitly with 1 message: 'to infinity and beyond' Tricky.tests.cpp:: failed: &o1 == &o2 for: 0x == 0x @@ -261,8 +271,8 @@ Approx.tests.cpp:: passed: 104.0 != Approx(100.0) for: 104.0 != App Approx.tests.cpp:: passed: 104.0 == Approx(100.0).margin(5) for: 104.0 == Approx( 100.0 ) Approx.tests.cpp:: passed: 104.0 == Approx(100.0).margin(4) for: 104.0 == Approx( 100.0 ) Approx.tests.cpp:: passed: 104.0 != Approx(100.0).margin(3) for: 104.0 != Approx( 100.0 ) -Approx.tests.cpp:: passed: 100.3 != Approx(100.0) for: 100.3 != Approx( 100.0 ) -Approx.tests.cpp:: passed: 100.3 == Approx(100.0).margin(0.5) for: 100.3 == Approx( 100.0 ) +Approx.tests.cpp:: passed: 100.3 != Approx(100.0) for: 100.29999999999999716 != Approx( 100.0 ) +Approx.tests.cpp:: passed: 100.3 == Approx(100.0).margin(0.5) for: 100.29999999999999716 == Approx( 100.0 ) Tricky.tests.cpp:: passed: i++ == 7 for: 7 == 7 Tricky.tests.cpp:: passed: i++ == 8 for: 8 == 8 Exception.tests.cpp:: passed: 1 == 1 @@ -280,19 +290,33 @@ Approx.tests.cpp:: passed: 0.0f == Approx(0.25f).margin(0.25f) for: Approx.tests.cpp:: passed: 0.5f == Approx(0.25f).margin(0.25f) for: 0.5f == Approx( 0.25 ) Approx.tests.cpp:: passed: 245.0f == Approx(245.25f).margin(0.25f) for: 245.0f == Approx( 245.25 ) Approx.tests.cpp:: passed: 245.5f == Approx(245.25f).margin(0.25f) for: 245.5f == Approx( 245.25 ) -Approx.tests.cpp:: passed: divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) for: 3.1428571429 == Approx( 3.141 ) -Approx.tests.cpp:: passed: divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) for: 3.1428571429 != Approx( 3.141 ) -Approx.tests.cpp:: passed: d != Approx( 1.231 ) for: 1.23 != Approx( 1.231 ) -Approx.tests.cpp:: passed: d == Approx( 1.231 ).epsilon( 0.1 ) for: 1.23 == Approx( 1.231 ) -Approx.tests.cpp:: passed: 1.23f == Approx( 1.23f ) for: 1.23f == Approx( 1.2300000191 ) +Approx.tests.cpp:: passed: divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) for: 3.14285714285714279 +== +Approx( 3.14100000000000001 ) +Approx.tests.cpp:: passed: divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) for: 3.14285714285714279 +!= +Approx( 3.14100000000000001 ) +Approx.tests.cpp:: passed: d != Approx( 1.231 ) for: 1.22999999999999998 +!= +Approx( 1.23100000000000009 ) +Approx.tests.cpp:: passed: d == Approx( 1.231 ).epsilon( 0.1 ) for: 1.22999999999999998 +== +Approx( 1.23100000000000009 ) +Approx.tests.cpp:: passed: 1.23f == Approx( 1.23f ) for: 1.230000019f +== +Approx( 1.23000001907348633 ) Approx.tests.cpp:: passed: 0.0f == Approx( 0.0f ) for: 0.0f == Approx( 0.0 ) Approx.tests.cpp:: passed: 1 == Approx( 1 ) for: 1 == Approx( 1.0 ) Approx.tests.cpp:: passed: 0 == Approx( 0 ) for: 0 == Approx( 0.0 ) Approx.tests.cpp:: passed: 1.0f == Approx( 1 ) for: 1.0f == Approx( 1.0 ) Approx.tests.cpp:: passed: 0 == Approx( dZero) for: 0 == Approx( 0.0 ) Approx.tests.cpp:: passed: 0 == Approx( dSmall ).margin( 0.001 ) for: 0 == Approx( 0.00001 ) -Approx.tests.cpp:: passed: 1.234f == Approx( dMedium ) for: 1.234f == Approx( 1.234 ) -Approx.tests.cpp:: passed: dMedium == Approx( 1.234f ) for: 1.234 == Approx( 1.2339999676 ) +Approx.tests.cpp:: passed: 1.234f == Approx( dMedium ) for: 1.233999968f +== +Approx( 1.23399999999999999 ) +Approx.tests.cpp:: passed: dMedium == Approx( 1.234f ) for: 1.23399999999999999 +== +Approx( 1.23399996757507324 ) Matchers.tests.cpp:: passed: 1, Predicate( alwaysTrue, "always true" ) for: 1 matches predicate: "always true" Matchers.tests.cpp:: passed: 1, !Predicate( alwaysFalse, "always false" ) for: 1 not matches predicate: "always false" Matchers.tests.cpp:: passed: "Hello olleH", Predicate( []( std::string const& str ) -> bool { return str.front() == str.back(); }, "First and last character should be equal" ) for: "Hello olleH" matches predicate: "First and last character should be equal" @@ -507,7 +531,7 @@ Stream.tests.cpp:: passed: Catch::makeStream( "-" )->isConsole() fo Exception.tests.cpp:: failed: unexpected exception with message: 'custom exception - not std'; expression was: throwCustom() Exception.tests.cpp:: failed: unexpected exception with message: 'custom exception - not std'; expression was: throwCustom(), std::exception Exception.tests.cpp:: failed: unexpected exception with message: 'custom std exception' -Approx.tests.cpp:: passed: 101.000001 != Approx(100).epsilon(0.01) for: 101.000001 != Approx( 100.0 ) +Approx.tests.cpp:: passed: 101.000001 != Approx(100).epsilon(0.01) for: 101.00000099999999748 != Approx( 100.0 ) Approx.tests.cpp:: passed: std::pow(10, -5) != Approx(std::pow(10, -7)) for: 0.00001 != Approx( 0.0000001 ) ToString.tests.cpp:: passed: enumInfo->lookup(0) == "Value1" for: Value1 == "Value1" ToString.tests.cpp:: passed: enumInfo->lookup(1) == "Value2" for: Value2 == "Value2" @@ -527,27 +551,39 @@ EnumToString.tests.cpp:: passed: stringify( EnumClass3::Value4 ) == EnumToString.tests.cpp:: passed: stringify( ec3 ) == "Value2" for: "Value2" == "Value2" EnumToString.tests.cpp:: passed: stringify( Bikeshed::Colours::Red ) == "Red" for: "Red" == "Red" EnumToString.tests.cpp:: passed: stringify( Bikeshed::Colours::Blue ) == "Blue" for: "Blue" == "Blue" -Approx.tests.cpp:: passed: 101.01 != Approx(100).epsilon(0.01) for: 101.01 != Approx( 100.0 ) +Approx.tests.cpp:: passed: 101.01 != Approx(100).epsilon(0.01) for: 101.01000000000000512 != Approx( 100.0 ) Condition.tests.cpp:: failed: data.int_seven == 6 for: 7 == 6 Condition.tests.cpp:: failed: data.int_seven == 8 for: 7 == 8 Condition.tests.cpp:: failed: data.int_seven == 0 for: 7 == 0 -Condition.tests.cpp:: failed: data.float_nine_point_one == Approx( 9.11f ) for: 9.1f == Approx( 9.1099996567 ) -Condition.tests.cpp:: failed: data.float_nine_point_one == Approx( 9.0f ) for: 9.1f == Approx( 9.0 ) -Condition.tests.cpp:: failed: data.float_nine_point_one == Approx( 1 ) for: 9.1f == Approx( 1.0 ) -Condition.tests.cpp:: failed: data.float_nine_point_one == Approx( 0 ) for: 9.1f == Approx( 0.0 ) -Condition.tests.cpp:: failed: data.double_pi == Approx( 3.1415 ) for: 3.1415926535 == Approx( 3.1415 ) +Condition.tests.cpp:: failed: data.float_nine_point_one == Approx( 9.11f ) for: 9.100000381f +== +Approx( 9.10999965667724609 ) +Condition.tests.cpp:: failed: data.float_nine_point_one == Approx( 9.0f ) for: 9.100000381f == Approx( 9.0 ) +Condition.tests.cpp:: failed: data.float_nine_point_one == Approx( 1 ) for: 9.100000381f == Approx( 1.0 ) +Condition.tests.cpp:: failed: data.float_nine_point_one == Approx( 0 ) for: 9.100000381f == Approx( 0.0 ) +Condition.tests.cpp:: failed: data.double_pi == Approx( 3.1415 ) for: 3.14159265350000005 +== +Approx( 3.14150000000000018 ) Condition.tests.cpp:: failed: data.str_hello == "goodbye" for: "hello" == "goodbye" Condition.tests.cpp:: failed: data.str_hello == "hell" for: "hello" == "hell" Condition.tests.cpp:: failed: data.str_hello == "hello1" for: "hello" == "hello1" Condition.tests.cpp:: failed: data.str_hello.size() == 6 for: 5 == 6 -Condition.tests.cpp:: failed: x == Approx( 1.301 ) for: 1.3 == Approx( 1.301 ) +Condition.tests.cpp:: failed: x == Approx( 1.301 ) for: 1.30000000000000027 +== +Approx( 1.30099999999999993 ) Condition.tests.cpp:: passed: data.int_seven == 7 for: 7 == 7 -Condition.tests.cpp:: passed: data.float_nine_point_one == Approx( 9.1f ) for: 9.1f == Approx( 9.1000003815 ) -Condition.tests.cpp:: passed: data.double_pi == Approx( 3.1415926535 ) for: 3.1415926535 == Approx( 3.1415926535 ) +Condition.tests.cpp:: passed: data.float_nine_point_one == Approx( 9.1f ) for: 9.100000381f +== +Approx( 9.10000038146972656 ) +Condition.tests.cpp:: passed: data.double_pi == Approx( 3.1415926535 ) for: 3.14159265350000005 +== +Approx( 3.14159265350000005 ) Condition.tests.cpp:: passed: data.str_hello == "hello" for: "hello" == "hello" Condition.tests.cpp:: passed: "hello" == data.str_hello for: "hello" == "hello" Condition.tests.cpp:: passed: data.str_hello.size() == 5 for: 5 == 5 -Condition.tests.cpp:: passed: x == Approx( 1.3 ) for: 1.3 == Approx( 1.3 ) +Condition.tests.cpp:: passed: x == Approx( 1.3 ) for: 1.30000000000000027 +== +Approx( 1.30000000000000004 ) Matchers.tests.cpp:: passed: testStringForMatching(), Equals( "this string contains 'abc' as a substring" ) for: "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" Matchers.tests.cpp:: passed: testStringForMatching(), Equals( "this string contains 'ABC' as a substring", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" (case insensitive) Matchers.tests.cpp:: failed: testStringForMatching(), Equals( "this string contains 'ABC' as a substring" ) for: "this string contains 'abc' as a substring" equals: "this string contains 'ABC' as a substring" @@ -594,21 +630,21 @@ Misc.tests.cpp:: passed: Factorial(2) == 2 for: 2 == 2 Misc.tests.cpp:: passed: Factorial(3) == 6 for: 6 == 6 Misc.tests.cpp:: passed: Factorial(10) == 3628800 for: 3628800 (0x) == 3628800 (0x) GeneratorsImpl.tests.cpp:: passed: filter( []( int ) { return false; }, value( 3 ) ), Catch::GeneratorException -Matchers.tests.cpp:: passed: 10., WithinRel( 11.1, 0.1 ) for: 10.0 and 11.1 are within 10% of each other -Matchers.tests.cpp:: passed: 10., !WithinRel( 11.2, 0.1 ) for: 10.0 not and 11.2 are within 10% of each other +Matchers.tests.cpp:: passed: 10., WithinRel( 11.1, 0.1 ) for: 10.0 and 11.09999999999999964 are within 10% of each other +Matchers.tests.cpp:: passed: 10., !WithinRel( 11.2, 0.1 ) for: 10.0 not and 11.19999999999999929 are within 10% of each other Matchers.tests.cpp:: passed: 1., !WithinRel( 0., 0.99 ) for: 1.0 not and 0.0 are within 99% of each other Matchers.tests.cpp:: passed: -0., WithinRel( 0. ) for: -0.0 and 0.0 are within 2.22045e-12% of each other Matchers.tests.cpp:: passed: v1, WithinRel( v2 ) for: 0.0 and 0.0 are within 2.22045e-12% of each other Matchers.tests.cpp:: passed: 1., WithinAbs( 1., 0 ) for: 1.0 is within 0.0 of 1.0 Matchers.tests.cpp:: passed: 0., WithinAbs( 1., 1 ) for: 0.0 is within 1.0 of 1.0 -Matchers.tests.cpp:: passed: 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.99 of 1.0 -Matchers.tests.cpp:: passed: 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.99 of 1.0 +Matchers.tests.cpp:: passed: 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.98999999999999999 of 1.0 +Matchers.tests.cpp:: passed: 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.98999999999999999 of 1.0 Matchers.tests.cpp:: passed: 11., !WithinAbs( 10., 0.5 ) for: 11.0 not is within 0.5 of 10.0 Matchers.tests.cpp:: passed: 10., !WithinAbs( 11., 0.5 ) for: 10.0 not is within 0.5 of 11.0 Matchers.tests.cpp:: passed: -10., WithinAbs( -10., 0.5 ) for: -10.0 is within 0.5 of -10.0 -Matchers.tests.cpp:: passed: -10., WithinAbs( -9.6, 0.5 ) for: -10.0 is within 0.5 of -9.6 +Matchers.tests.cpp:: passed: -10., WithinAbs( -9.6, 0.5 ) for: -10.0 is within 0.5 of -9.59999999999999964 Matchers.tests.cpp:: passed: 1., WithinULP( 1., 0 ) for: 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00]) -Matchers.tests.cpp:: passed: nextafter( 1., 2. ), WithinULP( 1., 1 ) for: 1.0 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00]) +Matchers.tests.cpp:: passed: nextafter( 1., 2. ), WithinULP( 1., 1 ) for: 1.00000000000000022 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00]) Matchers.tests.cpp:: passed: 0., WithinULP( nextafter( 0., 1. ), 1 ) for: 0.0 is within 1 ULPs of 4.9406564584124654e-324 ([0.0000000000000000e+00, 9.8813129168249309e-324]) Matchers.tests.cpp:: passed: 1., WithinULP( nextafter( 1., 0. ), 1 ) for: 1.0 is within 1 ULPs of 9.9999999999999989e-01 ([9.9999999999999978e-01, 1.0000000000000000e+00]) Matchers.tests.cpp:: passed: 1., !WithinULP( nextafter( 1., 2. ), 0 ) for: 1.0 not is within 0 ULPs of 1.0000000000000002e+00 ([1.0000000000000002e+00, 1.0000000000000002e+00]) @@ -624,23 +660,23 @@ Matchers.tests.cpp:: passed: WithinRel( 1., 0. ) Matchers.tests.cpp:: passed: WithinRel( 1., -0.2 ), std::domain_error Matchers.tests.cpp:: passed: WithinRel( 1., 1. ), std::domain_error Matchers.tests.cpp:: passed: 1., !IsNaN() for: 1.0 not is NaN -Matchers.tests.cpp:: passed: 10.f, WithinRel( 11.1f, 0.1f ) for: 10.0f and 11.1000003815 are within 10% of each other -Matchers.tests.cpp:: passed: 10.f, !WithinRel( 11.2f, 0.1f ) for: 10.0f not and 11.1999998093 are within 10% of each other +Matchers.tests.cpp:: passed: 10.f, WithinRel( 11.1f, 0.1f ) for: 10.0f and 11.10000038146972656 are within 10% of each other +Matchers.tests.cpp:: passed: 10.f, !WithinRel( 11.2f, 0.1f ) for: 10.0f not and 11.19999980926513672 are within 10% of each other Matchers.tests.cpp:: passed: 1.f, !WithinRel( 0.f, 0.99f ) for: 1.0f not and 0.0 are within 99% of each other Matchers.tests.cpp:: passed: -0.f, WithinRel( 0.f ) for: -0.0f and 0.0 are within 0.00119209% of each other Matchers.tests.cpp:: passed: v1, WithinRel( v2 ) for: 0.0f and 0.0 are within 0.00119209% of each other Matchers.tests.cpp:: passed: 1.f, WithinAbs( 1.f, 0 ) for: 1.0f is within 0.0 of 1.0 Matchers.tests.cpp:: passed: 0.f, WithinAbs( 1.f, 1 ) for: 0.0f is within 1.0 of 1.0 -Matchers.tests.cpp:: passed: 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.9900000095 of 1.0 -Matchers.tests.cpp:: passed: 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.9900000095 of 1.0 +Matchers.tests.cpp:: passed: 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.99000000953674316 of 1.0 +Matchers.tests.cpp:: passed: 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.99000000953674316 of 1.0 Matchers.tests.cpp:: passed: 0.f, WithinAbs( -0.f, 0 ) for: 0.0f is within 0.0 of -0.0 Matchers.tests.cpp:: passed: 11.f, !WithinAbs( 10.f, 0.5f ) for: 11.0f not is within 0.5 of 10.0 Matchers.tests.cpp:: passed: 10.f, !WithinAbs( 11.f, 0.5f ) for: 10.0f not is within 0.5 of 11.0 Matchers.tests.cpp:: passed: -10.f, WithinAbs( -10.f, 0.5f ) for: -10.0f is within 0.5 of -10.0 -Matchers.tests.cpp:: passed: -10.f, WithinAbs( -9.6f, 0.5f ) for: -10.0f is within 0.5 of -9.6000003815 +Matchers.tests.cpp:: passed: -10.f, WithinAbs( -9.6f, 0.5f ) for: -10.0f is within 0.5 of -9.60000038146972656 Matchers.tests.cpp:: passed: 1.f, WithinULP( 1.f, 0 ) for: 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) Matchers.tests.cpp:: passed: -1.f, WithinULP( -1.f, 0 ) for: -1.0f is within 0 ULPs of -1.00000000e+00f ([-1.00000000e+00, -1.00000000e+00]) -Matchers.tests.cpp:: passed: nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) for: 1.0f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) +Matchers.tests.cpp:: passed: nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) for: 1.000000119f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) Matchers.tests.cpp:: passed: 0.f, WithinULP( nextafter( 0.f, 1.f ), 1 ) for: 0.0f is within 1 ULPs of 1.40129846e-45f ([0.00000000e+00, 2.80259693e-45]) Matchers.tests.cpp:: passed: 1.f, WithinULP( nextafter( 1.f, 0.f ), 1 ) for: 1.0f is within 1 ULPs of 9.99999940e-01f ([9.99999881e-01, 1.00000000e+00]) Matchers.tests.cpp:: passed: 1.f, !WithinULP( nextafter( 1.f, 2.f ), 0 ) for: 1.0f not is within 0 ULPs of 1.00000012e+00f ([1.00000012e+00, 1.00000012e+00]) @@ -648,7 +684,7 @@ Matchers.tests.cpp:: passed: 1.f, WithinULP( 1.f, 0 ) for: 1.0f is Matchers.tests.cpp:: passed: -0.f, WithinULP( 0.f, 0 ) for: -0.0f is within 0 ULPs of 0.00000000e+00f ([0.00000000e+00, 0.00000000e+00]) Matchers.tests.cpp:: passed: 1.f, WithinAbs( 1.f, 0.5 ) || WithinULP( 1.f, 1 ) for: 1.0f ( is within 0.5 of 1.0 or is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) ) Matchers.tests.cpp:: passed: 1.f, WithinAbs( 2.f, 0.5 ) || WithinULP( 1.f, 0 ) for: 1.0f ( is within 0.5 of 2.0 or is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) ) -Matchers.tests.cpp:: passed: 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) for: 0.0001f ( is within 0.001 of 0.0 or and 0.0 are within 10% of each other ) +Matchers.tests.cpp:: passed: 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) for: 0.0001f ( is within 0.00100000004749745 of 0.0 or and 0.0 are within 10% of each other ) Matchers.tests.cpp:: passed: WithinAbs( 1.f, 0.f ) Matchers.tests.cpp:: passed: WithinAbs( 1.f, -1.f ), std::domain_error Matchers.tests.cpp:: passed: WithinULP( 1.f, 0 ) @@ -828,68 +864,122 @@ GeneratorsImpl.tests.cpp:: passed: gen.get() == 5 for: 5 == 5 GeneratorsImpl.tests.cpp:: passed: !(gen.next()) for: !false GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -1' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.9 == Approx( -0.9 ) with 1 message: 'Current expected value is -0.9' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.90000000000000002 +== +Approx( -0.90000000000000002 ) with 1 message: 'Current expected value is -0.9' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.9' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.8 == Approx( -0.8 ) with 1 message: 'Current expected value is -0.8' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.80000000000000004 +== +Approx( -0.80000000000000004 ) with 1 message: 'Current expected value is -0.8' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.8' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.7 == Approx( -0.7 ) with 1 message: 'Current expected value is -0.7' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.70000000000000007 +== +Approx( -0.70000000000000007 ) with 1 message: 'Current expected value is -0.7' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.7' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.6 == Approx( -0.6 ) with 1 message: 'Current expected value is -0.6' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.60000000000000009 +== +Approx( -0.60000000000000009 ) with 1 message: 'Current expected value is -0.6' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.6' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.5 == Approx( -0.5 ) with 1 message: 'Current expected value is -0.5' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.50000000000000011 +== +Approx( -0.50000000000000011 ) with 1 message: 'Current expected value is -0.5' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.5' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.4 == Approx( -0.4 ) with 1 message: 'Current expected value is -0.4' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.40000000000000013 +== +Approx( -0.40000000000000013 ) with 1 message: 'Current expected value is -0.4' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.4' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.3 == Approx( -0.3 ) with 1 message: 'Current expected value is -0.3' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.30000000000000016 +== +Approx( -0.30000000000000016 ) with 1 message: 'Current expected value is -0.3' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.3' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.2 == Approx( -0.2 ) with 1 message: 'Current expected value is -0.2' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.20000000000000015 +== +Approx( -0.20000000000000015 ) with 1 message: 'Current expected value is -0.2' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.2' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.1 == Approx( -0.1 ) with 1 message: 'Current expected value is -0.1' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.10000000000000014 +== +Approx( -0.10000000000000014 ) with 1 message: 'Current expected value is -0.1' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.1' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.0 == Approx( -0.0 ) with 1 message: 'Current expected value is -1.38778e-16' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.00000000000000014 +== +Approx( -0.00000000000000014 ) with 1 message: 'Current expected value is -1.38778e-16' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -1.38778e-16' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.1 == Approx( 0.1 ) with 1 message: 'Current expected value is 0.1' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.09999999999999987 +== +Approx( 0.09999999999999987 ) with 1 message: 'Current expected value is 0.1' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.1' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.2 == Approx( 0.2 ) with 1 message: 'Current expected value is 0.2' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.19999999999999987 +== +Approx( 0.19999999999999987 ) with 1 message: 'Current expected value is 0.2' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.2' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.3 == Approx( 0.3 ) with 1 message: 'Current expected value is 0.3' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.29999999999999988 +== +Approx( 0.29999999999999988 ) with 1 message: 'Current expected value is 0.3' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.3' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.4 == Approx( 0.4 ) with 1 message: 'Current expected value is 0.4' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.39999999999999991 +== +Approx( 0.39999999999999991 ) with 1 message: 'Current expected value is 0.4' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.4' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.5 == Approx( 0.5 ) with 1 message: 'Current expected value is 0.5' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.49999999999999989 +== +Approx( 0.49999999999999989 ) with 1 message: 'Current expected value is 0.5' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.5' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.6 == Approx( 0.6 ) with 1 message: 'Current expected value is 0.6' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.59999999999999987 +== +Approx( 0.59999999999999987 ) with 1 message: 'Current expected value is 0.6' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.6' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.7 == Approx( 0.7 ) with 1 message: 'Current expected value is 0.7' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.69999999999999984 +== +Approx( 0.69999999999999984 ) with 1 message: 'Current expected value is 0.7' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.7' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.8 == Approx( 0.8 ) with 1 message: 'Current expected value is 0.8' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.79999999999999982 +== +Approx( 0.79999999999999982 ) with 1 message: 'Current expected value is 0.8' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.8' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.9 == Approx( 0.9 ) with 1 message: 'Current expected value is 0.9' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.8999999999999998 +== +Approx( 0.8999999999999998 ) with 1 message: 'Current expected value is 0.9' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.9' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx( rangeEnd ) for: 1.0 == Approx( 1.0 ) +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx( rangeEnd ) for: 0.99999999999999978 == Approx( 1.0 ) GeneratorsImpl.tests.cpp:: passed: !(gen.next()) for: !false GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -1' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.7 == Approx( -0.7 ) with 1 message: 'Current expected value is -0.7' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.69999999999999996 +== +Approx( -0.69999999999999996 ) with 1 message: 'Current expected value is -0.7' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.7' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.4 == Approx( -0.4 ) with 1 message: 'Current expected value is -0.4' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.39999999999999997 +== +Approx( -0.39999999999999997 ) with 1 message: 'Current expected value is -0.4' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.4' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.1 == Approx( -0.1 ) with 1 message: 'Current expected value is -0.1' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.09999999999999998 +== +Approx( -0.09999999999999998 ) with 1 message: 'Current expected value is -0.1' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.1' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.2 == Approx( 0.2 ) with 1 message: 'Current expected value is 0.2' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.20000000000000001 +== +Approx( 0.20000000000000001 ) with 1 message: 'Current expected value is 0.2' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.2' GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.5 == Approx( 0.5 ) with 1 message: 'Current expected value is 0.5' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.5' GeneratorsImpl.tests.cpp:: passed: !(gen.next()) for: !false GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) with 1 message: 'Current expected value is -1' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -1' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.7 == Approx( -0.7 ) with 1 message: 'Current expected value is -0.7' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.69999999999999996 +== +Approx( -0.69999999999999996 ) with 1 message: 'Current expected value is -0.7' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.7' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.4 == Approx( -0.4 ) with 1 message: 'Current expected value is -0.4' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.39999999999999997 +== +Approx( -0.39999999999999997 ) with 1 message: 'Current expected value is -0.4' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.4' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.1 == Approx( -0.1 ) with 1 message: 'Current expected value is -0.1' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: -0.09999999999999998 +== +Approx( -0.09999999999999998 ) with 1 message: 'Current expected value is -0.1' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is -0.1' -GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.2 == Approx( 0.2 ) with 1 message: 'Current expected value is 0.2' +GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.20000000000000001 +== +Approx( 0.20000000000000001 ) with 1 message: 'Current expected value is 0.2' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.2' GeneratorsImpl.tests.cpp:: passed: gen.get() == Approx(expected) for: 0.5 == Approx( 0.5 ) with 1 message: 'Current expected value is 0.5' GeneratorsImpl.tests.cpp:: passed: gen.next() for: true with 1 message: 'Current expected value is 0.5' @@ -920,10 +1010,18 @@ GeneratorsImpl.tests.cpp:: passed: gen.get() == -4 for: -4 == -4 GeneratorsImpl.tests.cpp:: passed: gen.next() for: true GeneratorsImpl.tests.cpp:: passed: gen.get() == -7 for: -7 == -7 GeneratorsImpl.tests.cpp:: passed: !(gen.next()) for: !false -Approx.tests.cpp:: passed: d >= Approx( 1.22 ) for: 1.23 >= Approx( 1.22 ) -Approx.tests.cpp:: passed: d >= Approx( 1.23 ) for: 1.23 >= Approx( 1.23 ) -Approx.tests.cpp:: passed: !(d >= Approx( 1.24 )) for: !(1.23 >= Approx( 1.24 )) -Approx.tests.cpp:: passed: d >= Approx( 1.24 ).epsilon(0.1) for: 1.23 >= Approx( 1.24 ) +Approx.tests.cpp:: passed: d >= Approx( 1.22 ) for: 1.22999999999999998 +>= +Approx( 1.21999999999999997 ) +Approx.tests.cpp:: passed: d >= Approx( 1.23 ) for: 1.22999999999999998 +>= +Approx( 1.22999999999999998 ) +Approx.tests.cpp:: passed: !(d >= Approx( 1.24 )) for: !(1.22999999999999998 +>= +Approx( 1.23999999999999999 )) +Approx.tests.cpp:: passed: d >= Approx( 1.24 ).epsilon(0.1) for: 1.22999999999999998 +>= +Approx( 1.23999999999999999 ) TestCaseInfoHasher.tests.cpp:: passed: h1( dummy ) != h2( dummy ) for: 3422778688 (0x) != 130711275 (0x) @@ -962,17 +1060,25 @@ Message.tests.cpp:: passed: i < 10 for: 9 < 10 with 2 messages: 'cu Message.tests.cpp:: failed: i < 10 for: 10 < 10 with 2 messages: 'current counter 10' and 'i := 10' AssertionHandler.tests.cpp:: failed: unexpected exception with message: 'Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE'; expression was: Dummy Condition.tests.cpp:: failed: data.int_seven != 7 for: 7 != 7 -Condition.tests.cpp:: failed: data.float_nine_point_one != Approx( 9.1f ) for: 9.1f != Approx( 9.1000003815 ) -Condition.tests.cpp:: failed: data.double_pi != Approx( 3.1415926535 ) for: 3.1415926535 != Approx( 3.1415926535 ) +Condition.tests.cpp:: failed: data.float_nine_point_one != Approx( 9.1f ) for: 9.100000381f +!= +Approx( 9.10000038146972656 ) +Condition.tests.cpp:: failed: data.double_pi != Approx( 3.1415926535 ) for: 3.14159265350000005 +!= +Approx( 3.14159265350000005 ) Condition.tests.cpp:: failed: data.str_hello != "hello" for: "hello" != "hello" Condition.tests.cpp:: failed: data.str_hello.size() != 5 for: 5 != 5 Condition.tests.cpp:: passed: data.int_seven != 6 for: 7 != 6 Condition.tests.cpp:: passed: data.int_seven != 8 for: 7 != 8 -Condition.tests.cpp:: passed: data.float_nine_point_one != Approx( 9.11f ) for: 9.1f != Approx( 9.1099996567 ) -Condition.tests.cpp:: passed: data.float_nine_point_one != Approx( 9.0f ) for: 9.1f != Approx( 9.0 ) -Condition.tests.cpp:: passed: data.float_nine_point_one != Approx( 1 ) for: 9.1f != Approx( 1.0 ) -Condition.tests.cpp:: passed: data.float_nine_point_one != Approx( 0 ) for: 9.1f != Approx( 0.0 ) -Condition.tests.cpp:: passed: data.double_pi != Approx( 3.1415 ) for: 3.1415926535 != Approx( 3.1415 ) +Condition.tests.cpp:: passed: data.float_nine_point_one != Approx( 9.11f ) for: 9.100000381f +!= +Approx( 9.10999965667724609 ) +Condition.tests.cpp:: passed: data.float_nine_point_one != Approx( 9.0f ) for: 9.100000381f != Approx( 9.0 ) +Condition.tests.cpp:: passed: data.float_nine_point_one != Approx( 1 ) for: 9.100000381f != Approx( 1.0 ) +Condition.tests.cpp:: passed: data.float_nine_point_one != Approx( 0 ) for: 9.100000381f != Approx( 0.0 ) +Condition.tests.cpp:: passed: data.double_pi != Approx( 3.1415 ) for: 3.14159265350000005 +!= +Approx( 3.14150000000000018 ) Condition.tests.cpp:: passed: data.str_hello != "goodbye" for: "hello" != "goodbye" Condition.tests.cpp:: passed: data.str_hello != "hell" for: "hello" != "hell" Condition.tests.cpp:: passed: data.str_hello != "hello1" for: "hello" != "hello1" @@ -1063,10 +1169,18 @@ Json.tests.cpp:: passed: sstream.str() == "\"\\r\"" for: ""\r"" == Json.tests.cpp:: passed: sstream.str() == "\"\\t\"" for: ""\t"" == ""\t"" Json.tests.cpp:: passed: sstream.str() == "\"\\\\/\\t\\r\\n\"" for: ""\\/\t\r\n"" == ""\\/\t\r\n"" Compilation.tests.cpp:: passed: []() { return true; }() for: true -Approx.tests.cpp:: passed: d <= Approx( 1.24 ) for: 1.23 <= Approx( 1.24 ) -Approx.tests.cpp:: passed: d <= Approx( 1.23 ) for: 1.23 <= Approx( 1.23 ) -Approx.tests.cpp:: passed: !(d <= Approx( 1.22 )) for: !(1.23 <= Approx( 1.22 )) -Approx.tests.cpp:: passed: d <= Approx( 1.22 ).epsilon(0.1) for: 1.23 <= Approx( 1.22 ) +Approx.tests.cpp:: passed: d <= Approx( 1.24 ) for: 1.22999999999999998 +<= +Approx( 1.23999999999999999 ) +Approx.tests.cpp:: passed: d <= Approx( 1.23 ) for: 1.22999999999999998 +<= +Approx( 1.22999999999999998 ) +Approx.tests.cpp:: passed: !(d <= Approx( 1.22 )) for: !(1.22999999999999998 +<= +Approx( 1.21999999999999997 )) +Approx.tests.cpp:: passed: d <= Approx( 1.22 ).epsilon(0.1) for: 1.22999999999999998 +<= +Approx( 1.21999999999999997 ) Misc.tests.cpp:: passed: with 1 message: 'was called' Matchers.tests.cpp:: passed: testStringForMatching(), ContainsSubstring( "string" ) && ContainsSubstring( "abc" ) && ContainsSubstring( "substring" ) && ContainsSubstring( "contains" ) for: "this string contains 'abc' as a substring" ( contains: "string" and contains: "abc" and contains: "substring" and contains: "contains" ) Matchers.tests.cpp:: passed: testStringForMatching(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) for: "this string contains 'abc' as a substring" ( contains: "string" or contains: "different" or contains: "random" ) @@ -1133,9 +1247,9 @@ Condition.tests.cpp:: failed: data.int_seven < 0 for: 7 < 0 Condition.tests.cpp:: failed: data.int_seven < -1 for: 7 < -1 Condition.tests.cpp:: failed: data.int_seven >= 8 for: 7 >= 8 Condition.tests.cpp:: failed: data.int_seven <= 6 for: 7 <= 6 -Condition.tests.cpp:: failed: data.float_nine_point_one < 9 for: 9.1f < 9 -Condition.tests.cpp:: failed: data.float_nine_point_one > 10 for: 9.1f > 10 -Condition.tests.cpp:: failed: data.float_nine_point_one > 9.2 for: 9.1f > 9.2 +Condition.tests.cpp:: failed: data.float_nine_point_one < 9 for: 9.100000381f < 9 +Condition.tests.cpp:: failed: data.float_nine_point_one > 10 for: 9.100000381f > 10 +Condition.tests.cpp:: failed: data.float_nine_point_one > 9.2 for: 9.100000381f > 9.19999999999999929 Condition.tests.cpp:: failed: data.str_hello > "hello" for: "hello" > "hello" Condition.tests.cpp:: failed: data.str_hello < "hello" for: "hello" < "hello" Condition.tests.cpp:: failed: data.str_hello > "hellp" for: "hello" > "hellp" @@ -1152,9 +1266,9 @@ Condition.tests.cpp:: passed: data.int_seven >= 7 for: 7 >= 7 Condition.tests.cpp:: passed: data.int_seven >= 6 for: 7 >= 6 Condition.tests.cpp:: passed: data.int_seven <= 7 for: 7 <= 7 Condition.tests.cpp:: passed: data.int_seven <= 8 for: 7 <= 8 -Condition.tests.cpp:: passed: data.float_nine_point_one > 9 for: 9.1f > 9 -Condition.tests.cpp:: passed: data.float_nine_point_one < 10 for: 9.1f < 10 -Condition.tests.cpp:: passed: data.float_nine_point_one < 9.2 for: 9.1f < 9.2 +Condition.tests.cpp:: passed: data.float_nine_point_one > 9 for: 9.100000381f > 9 +Condition.tests.cpp:: passed: data.float_nine_point_one < 10 for: 9.100000381f < 10 +Condition.tests.cpp:: passed: data.float_nine_point_one < 9.2 for: 9.100000381f < 9.19999999999999929 Condition.tests.cpp:: passed: data.str_hello <= "hello" for: "hello" <= "hello" Condition.tests.cpp:: passed: data.str_hello >= "hello" for: "hello" >= "hello" Condition.tests.cpp:: passed: data.str_hello < "hellp" for: "hello" < "hellp" @@ -1352,7 +1466,9 @@ CmdLine.tests.cpp:: passed: config.benchmarkSamples == 200 for: 200 CmdLine.tests.cpp:: passed: cli.parse({ "test", "--benchmark-resamples=20000" }) for: {?} CmdLine.tests.cpp:: passed: config.benchmarkResamples == 20000 for: 20000 (0x) == 20000 (0x) CmdLine.tests.cpp:: passed: cli.parse({ "test", "--benchmark-confidence-interval=0.99" }) for: {?} -CmdLine.tests.cpp:: passed: config.benchmarkConfidenceInterval == Catch::Approx(0.99) for: 0.99 == Approx( 0.99 ) +CmdLine.tests.cpp:: passed: config.benchmarkConfidenceInterval == Catch::Approx(0.99) for: 0.98999999999999999 +== +Approx( 0.98999999999999999 ) CmdLine.tests.cpp:: passed: cli.parse({ "test", "--benchmark-no-analysis" }) for: {?} CmdLine.tests.cpp:: passed: config.benchmarkNoAnalysis for: true CmdLine.tests.cpp:: passed: cli.parse({ "test", "--benchmark-warmup-time=10" }) for: {?} @@ -1604,14 +1720,30 @@ BDD.tests.cpp:: passed: v.capacity() >= 10 for: 10 >= 10 BDD.tests.cpp:: passed: v.size() == 0 for: 0 == 0 BDD.tests.cpp:: passed: v.capacity() >= 10 for: 10 >= 10 BDD.tests.cpp:: passed: v.size() == 0 for: 0 == 0 -Approx.tests.cpp:: passed: d == Approx( 1.23 ) for: 1.23 == Approx( 1.23 ) -Approx.tests.cpp:: passed: d != Approx( 1.22 ) for: 1.23 != Approx( 1.22 ) -Approx.tests.cpp:: passed: d != Approx( 1.24 ) for: 1.23 != Approx( 1.24 ) -Approx.tests.cpp:: passed: d == 1.23_a for: 1.23 == Approx( 1.23 ) -Approx.tests.cpp:: passed: d != 1.22_a for: 1.23 != Approx( 1.22 ) -Approx.tests.cpp:: passed: Approx( d ) == 1.23 for: Approx( 1.23 ) == 1.23 -Approx.tests.cpp:: passed: Approx( d ) != 1.22 for: Approx( 1.23 ) != 1.22 -Approx.tests.cpp:: passed: Approx( d ) != 1.24 for: Approx( 1.23 ) != 1.24 +Approx.tests.cpp:: passed: d == Approx( 1.23 ) for: 1.22999999999999998 +== +Approx( 1.22999999999999998 ) +Approx.tests.cpp:: passed: d != Approx( 1.22 ) for: 1.22999999999999998 +!= +Approx( 1.21999999999999997 ) +Approx.tests.cpp:: passed: d != Approx( 1.24 ) for: 1.22999999999999998 +!= +Approx( 1.23999999999999999 ) +Approx.tests.cpp:: passed: d == 1.23_a for: 1.22999999999999998 +== +Approx( 1.22999999999999998 ) +Approx.tests.cpp:: passed: d != 1.22_a for: 1.22999999999999998 +!= +Approx( 1.21999999999999997 ) +Approx.tests.cpp:: passed: Approx( d ) == 1.23 for: Approx( 1.22999999999999998 ) +== +1.22999999999999998 +Approx.tests.cpp:: passed: Approx( d ) != 1.22 for: Approx( 1.22999999999999998 ) +!= +1.21999999999999997 +Approx.tests.cpp:: passed: Approx( d ) != 1.24 for: Approx( 1.22999999999999998 ) +!= +1.23999999999999999 Matchers.tests.cpp:: failed: testStringForMatching(), StartsWith( "This String" ) for: "this string contains 'abc' as a substring" starts with: "This String" Matchers.tests.cpp:: failed: testStringForMatching(), StartsWith( "string", Catch::CaseSensitive::No ) for: "this string contains 'abc' as a substring" starts with: "string" (case insensitive) ToStringGeneral.tests.cpp:: passed: Catch::Detail::stringify(singular) == "{ 1 }" for: "{ 1 }" == "{ 1 }" @@ -2018,7 +2150,7 @@ MatchersRanges.tests.cpp:: passed: a, !RangeEquals( b ) for: { 1, 2 MatchersRanges.tests.cpp:: passed: a, UnorderedRangeEquals( b ) for: { 1, 2, 3 } unordered elements are { 3, 2, 1 } MatchersRanges.tests.cpp:: passed: vector_a, RangeEquals( array_a_plus_1, close_enough ) for: { 1, 2, 3 } elements are { 2, 3, 4 } MatchersRanges.tests.cpp:: passed: vector_a, UnorderedRangeEquals( array_a_plus_1, close_enough ) for: { 1, 2, 3 } unordered elements are { 2, 3, 4 } -Exception.tests.cpp:: failed: unexpected exception with message: '3.14' +Exception.tests.cpp:: failed: unexpected exception with message: '3.14000000000000012' UniquePtr.tests.cpp:: passed: bptr->i == 3 for: 3 == 3 UniquePtr.tests.cpp:: passed: bptr->i == 3 for: 3 == 3 MatchersRanges.tests.cpp:: passed: data, AllMatch(SizeIs(5)) for: { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0 }, { 1, 0, 0, -1, 5 } } all match has size == 5 @@ -2164,14 +2296,26 @@ MatchersRanges.tests.cpp:: passed: arr, !SizeIs(!Lt(3)) for: { 0, 0 MatchersRanges.tests.cpp:: passed: map, SizeIs(3) for: { {?}, {?}, {?} } has size == 3 MatchersRanges.tests.cpp:: passed: unrelated::ADL_size{}, SizeIs(12) for: {?} has size == 12 MatchersRanges.tests.cpp:: passed: has_size{}, SizeIs(13) for: {?} has size == 13 -Approx.tests.cpp:: passed: d == approx( 1.23 ) for: 1.23 == Approx( 1.23 ) -Approx.tests.cpp:: passed: d == approx( 1.22 ) for: 1.23 == Approx( 1.22 ) -Approx.tests.cpp:: passed: d == approx( 1.24 ) for: 1.23 == Approx( 1.24 ) -Approx.tests.cpp:: passed: d != approx( 1.25 ) for: 1.23 != Approx( 1.25 ) -Approx.tests.cpp:: passed: approx( d ) == 1.23 for: Approx( 1.23 ) == 1.23 -Approx.tests.cpp:: passed: approx( d ) == 1.22 for: Approx( 1.23 ) == 1.22 -Approx.tests.cpp:: passed: approx( d ) == 1.24 for: Approx( 1.23 ) == 1.24 -Approx.tests.cpp:: passed: approx( d ) != 1.25 for: Approx( 1.23 ) != 1.25 +Approx.tests.cpp:: passed: d == approx( 1.23 ) for: 1.22999999999999998 +== +Approx( 1.22999999999999998 ) +Approx.tests.cpp:: passed: d == approx( 1.22 ) for: 1.22999999999999998 +== +Approx( 1.21999999999999997 ) +Approx.tests.cpp:: passed: d == approx( 1.24 ) for: 1.22999999999999998 +== +Approx( 1.23999999999999999 ) +Approx.tests.cpp:: passed: d != approx( 1.25 ) for: 1.22999999999999998 != Approx( 1.25 ) +Approx.tests.cpp:: passed: approx( d ) == 1.23 for: Approx( 1.22999999999999998 ) +== +1.22999999999999998 +Approx.tests.cpp:: passed: approx( d ) == 1.22 for: Approx( 1.22999999999999998 ) +== +1.21999999999999997 +Approx.tests.cpp:: passed: approx( d ) == 1.24 for: Approx( 1.22999999999999998 ) +== +1.23999999999999999 +Approx.tests.cpp:: passed: approx( d ) != 1.25 for: Approx( 1.22999999999999998 ) != 1.25 VariadicMacros.tests.cpp:: passed: with 1 message: 'no assertions' Matchers.tests.cpp:: passed: empty, Approx( empty ) for: { } is approx: { } Matchers.tests.cpp:: passed: v1, Approx( v1 ) for: { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 } @@ -2346,9 +2490,15 @@ Skip.tests.cpp:: skipped: 'skipping because answer = 41' Skip.tests.cpp:: passed: Skip.tests.cpp:: skipped: 'skipping because answer = 43' Tag.tests.cpp:: passed: Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo) -InternalBenchmark.tests.cpp:: passed: erfc_inv(1.103560) == Approx(-0.09203687623843015) for: -0.0920368762 == Approx( -0.0920368762 ) -InternalBenchmark.tests.cpp:: passed: erfc_inv(1.067400) == Approx(-0.05980291115763361) for: -0.0598029112 == Approx( -0.0598029112 ) -InternalBenchmark.tests.cpp:: passed: erfc_inv(0.050000) == Approx(1.38590382434967796) for: 1.3859038243 == Approx( 1.3859038243 ) +InternalBenchmark.tests.cpp:: passed: erfc_inv(1.103560) == Approx(-0.09203687623843015) for: -0.09203687623843014 +== +Approx( -0.09203687623843015 ) +InternalBenchmark.tests.cpp:: passed: erfc_inv(1.067400) == Approx(-0.05980291115763361) for: -0.05980291115763361 +== +Approx( -0.05980291115763361 ) +InternalBenchmark.tests.cpp:: passed: erfc_inv(0.050000) == Approx(1.38590382434967796) for: 1.38590382434967774 +== +Approx( 1.38590382434967796 ) InternalBenchmark.tests.cpp:: passed: res.mean.count() == rate for: 2000.0 == 2000 (0x) InternalBenchmark.tests.cpp:: passed: res.outliers.total() == 0 for: 0 == 0 Misc.tests.cpp:: passed: @@ -2421,14 +2571,15 @@ Misc.tests.cpp:: passed: a != b for: 1 != 2 Skip.tests.cpp:: skipped: Tricky.tests.cpp:: passed: s == "7" for: "7" == "7" Tricky.tests.cpp:: passed: ti == typeid(int) for: {?} == {?} -InternalBenchmark.tests.cpp:: passed: normal_cdf(0.000000) == Approx(0.50000000000000000) for: 0.5 == Approx( 0.5 ) -InternalBenchmark.tests.cpp:: passed: normal_cdf(1.000000) == Approx(0.84134474606854293) for: 0.8413447461 == Approx( 0.8413447461 ) -InternalBenchmark.tests.cpp:: passed: normal_cdf(-1.000000) == Approx(0.15865525393145705) for: 0.1586552539 == Approx( 0.1586552539 ) -InternalBenchmark.tests.cpp:: passed: normal_cdf(2.809729) == Approx(0.99752083845315409) for: 0.9975208385 == Approx( 0.9975208385 ) -InternalBenchmark.tests.cpp:: passed: normal_cdf(-1.352570) == Approx(0.08809652095066035) for: 0.088096521 == Approx( 0.088096521 ) -InternalBenchmark.tests.cpp:: passed: normal_quantile(0.551780) == Approx(0.13015979861484198) for: 0.1301597986 == Approx( 0.1301597986 ) -InternalBenchmark.tests.cpp:: passed: normal_quantile(0.533700) == Approx(0.08457408802851875) for: 0.084574088 == Approx( 0.084574088 ) -InternalBenchmark.tests.cpp:: passed: normal_quantile(0.025000) == Approx(-1.95996398454005449) for: -1.9599639845 == Approx( -1.9599639845 ) +InternalBenchmark.tests.cpp:: passed: normal_quantile(0.551780) == Approx(0.13015979861484198) for: 0.13015979861484195 +== +Approx( 0.13015979861484198 ) +InternalBenchmark.tests.cpp:: passed: normal_quantile(0.533700) == Approx(0.08457408802851875) for: 0.08457408802851875 +== +Approx( 0.08457408802851875 ) +InternalBenchmark.tests.cpp:: passed: normal_quantile(0.025000) == Approx(-1.95996398454005449) for: -1.95996398454005405 +== +Approx( -1.95996398454005449 ) Misc.tests.cpp:: passed: Message.tests.cpp:: passed: true with 1 message: 'this MAY be seen only for the FIRST assertion IF info is printed for passing assertions' Message.tests.cpp:: passed: true with 1 message: 'this MAY be seen only for the SECOND assertion IF info is printed for passing assertions' @@ -2598,19 +2749,19 @@ EnumToString.tests.cpp:: passed: ::Catch::Detail::stringify(e0) == EnumToString.tests.cpp:: passed: ::Catch::Detail::stringify(e1) == "1" for: "1" == "1" ToStringTuple.tests.cpp:: passed: "{ }" == ::Catch::Detail::stringify(type{}) for: "{ }" == "{ }" ToStringTuple.tests.cpp:: passed: "{ }" == ::Catch::Detail::stringify(value) for: "{ }" == "{ }" -ToStringTuple.tests.cpp:: passed: "1.2f" == ::Catch::Detail::stringify(float(1.2)) for: "1.2f" == "1.2f" -ToStringTuple.tests.cpp:: passed: "{ 1.2f, 0 }" == ::Catch::Detail::stringify(type{1.2f,0}) for: "{ 1.2f, 0 }" == "{ 1.2f, 0 }" +ToStringTuple.tests.cpp:: passed: "1.5f" == ::Catch::Detail::stringify(float(1.5)) for: "1.5f" == "1.5f" +ToStringTuple.tests.cpp:: passed: "{ 1.5f, 0 }" == ::Catch::Detail::stringify(type{1.5f,0}) for: "{ 1.5f, 0 }" == "{ 1.5f, 0 }" ToStringTuple.tests.cpp:: passed: "{ 0 }" == ::Catch::Detail::stringify(type{0}) for: "{ 0 }" == "{ 0 }" ToStringTuple.tests.cpp:: passed: "{ \"hello\", \"world\" }" == ::Catch::Detail::stringify(type{"hello","world"}) for: "{ "hello", "world" }" == "{ "hello", "world" }" -ToStringTuple.tests.cpp:: passed: "{ { 42 }, { }, 1.2f }" == ::Catch::Detail::stringify(value) for: "{ { 42 }, { }, 1.2f }" +ToStringTuple.tests.cpp:: passed: "{ { 42 }, { }, 1.5f }" == ::Catch::Detail::stringify(value) for: "{ { 42 }, { }, 1.5f }" == -"{ { 42 }, { }, 1.2f }" +"{ { 42 }, { }, 1.5f }" InternalBenchmark.tests.cpp:: passed: e.point == 23 for: 23.0 == 23 InternalBenchmark.tests.cpp:: passed: e.upper_bound == 23 for: 23.0 == 23 InternalBenchmark.tests.cpp:: passed: e.lower_bound == 23 for: 23.0 == 23 -InternalBenchmark.tests.cpp:: passed: e.confidence_interval == 0.95 for: 0.95 == 0.95 +InternalBenchmark.tests.cpp:: passed: e.confidence_interval == 0.95 for: 0.94999999999999996 == 0.94999999999999996 RandomNumberGeneration.tests.cpp:: passed: dist.a() == -10 for: -10 == -10 RandomNumberGeneration.tests.cpp:: passed: dist.b() == 10 for: 10 == 10 UniquePtr.tests.cpp:: passed: !(ptr) for: !{?} @@ -2678,7 +2829,7 @@ InternalBenchmark.tests.cpp:: passed: med == 18. for: 18.0 == 18.0 InternalBenchmark.tests.cpp:: passed: q3 == 23. for: 23.0 == 23.0 Misc.tests.cpp:: passed: Misc.tests.cpp:: passed: -test cases: 417 | 312 passed | 85 failed | 6 skipped | 14 failed as expected -assertions: 2260 | 2079 passed | 146 failed | 35 failed as expected +test cases: 416 | 311 passed | 85 failed | 6 skipped | 14 failed as expected +assertions: 2255 | 2074 passed | 146 failed | 35 failed as expected diff --git a/third_party/Catch2/tests/SelfTest/Baselines/console.std.approved.txt b/third_party/Catch2/tests/SelfTest/Baselines/console.std.approved.txt index 25426256..9b398435 100644 --- a/third_party/Catch2/tests/SelfTest/Baselines/console.std.approved.txt +++ b/third_party/Catch2/tests/SelfTest/Baselines/console.std.approved.txt @@ -434,27 +434,31 @@ with expansion: Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 9.11f ) ) with expansion: - 9.1f == Approx( 9.1099996567 ) + 9.100000381f + == + Approx( 9.10999965667724609 ) Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 9.0f ) ) with expansion: - 9.1f == Approx( 9.0 ) + 9.100000381f == Approx( 9.0 ) Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 1 ) ) with expansion: - 9.1f == Approx( 1.0 ) + 9.100000381f == Approx( 1.0 ) Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 0 ) ) with expansion: - 9.1f == Approx( 0.0 ) + 9.100000381f == Approx( 0.0 ) Condition.tests.cpp:: FAILED: CHECK( data.double_pi == Approx( 3.1415 ) ) with expansion: - 3.1415926535 == Approx( 3.1415 ) + 3.14159265350000005 + == + Approx( 3.14150000000000018 ) Condition.tests.cpp:: FAILED: CHECK( data.str_hello == "goodbye" ) @@ -479,7 +483,9 @@ with expansion: Condition.tests.cpp:: FAILED: CHECK( x == Approx( 1.301 ) ) with expansion: - 1.3 == Approx( 1.301 ) + 1.30000000000000027 + == + Approx( 1.30099999999999993 ) ------------------------------------------------------------------------------- Equals string matcher @@ -696,12 +702,16 @@ with expansion: Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one != Approx( 9.1f ) ) with expansion: - 9.1f != Approx( 9.1000003815 ) + 9.100000381f + != + Approx( 9.10000038146972656 ) Condition.tests.cpp:: FAILED: CHECK( data.double_pi != Approx( 3.1415926535 ) ) with expansion: - 3.1415926535 != Approx( 3.1415926535 ) + 3.14159265350000005 + != + Approx( 3.14159265350000005 ) Condition.tests.cpp:: FAILED: CHECK( data.str_hello != "hello" ) @@ -855,17 +865,17 @@ with expansion: Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one < 9 ) with expansion: - 9.1f < 9 + 9.100000381f < 9 Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one > 10 ) with expansion: - 9.1f > 10 + 9.100000381f > 10 Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one > 9.2 ) with expansion: - 9.1f > 9.2 + 9.100000381f > 9.19999999999999929 Condition.tests.cpp:: FAILED: CHECK( data.str_hello > "hello" ) @@ -1060,7 +1070,7 @@ Exception.tests.cpp: Exception.tests.cpp:: FAILED: due to unexpected exception with message: - 3.14 + 3.14000000000000012 ------------------------------------------------------------------------------- Vector Approx matcher -- failing @@ -1588,6 +1598,6 @@ due to unexpected exception with message: Why would you throw a std::string? =============================================================================== -test cases: 417 | 326 passed | 70 failed | 7 skipped | 14 failed as expected -assertions: 2243 | 2079 passed | 129 failed | 35 failed as expected +test cases: 416 | 325 passed | 70 failed | 7 skipped | 14 failed as expected +assertions: 2238 | 2074 passed | 129 failed | 35 failed as expected diff --git a/third_party/Catch2/tests/SelfTest/Baselines/console.sw.approved.txt b/third_party/Catch2/tests/SelfTest/Baselines/console.sw.approved.txt index 2424ea11..de89152e 100644 --- a/third_party/Catch2/tests/SelfTest/Baselines/console.sw.approved.txt +++ b/third_party/Catch2/tests/SelfTest/Baselines/console.sw.approved.txt @@ -2125,32 +2125,42 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( d == 1.23_a ) with expansion: - 1.23 == Approx( 1.23 ) + 1.22999999999999998 + == + Approx( 1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE( d != 1.22_a ) with expansion: - 1.23 != Approx( 1.22 ) + 1.22999999999999998 + != + Approx( 1.21999999999999997 ) Approx.tests.cpp:: PASSED: REQUIRE( -d == -1.23_a ) with expansion: - -1.23 == Approx( -1.23 ) + -1.22999999999999998 + == + Approx( -1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE( d == 1.2_a .epsilon(.1) ) with expansion: - 1.23 == Approx( 1.2 ) + 1.22999999999999998 + == + Approx( 1.19999999999999996 ) Approx.tests.cpp:: PASSED: REQUIRE( d != 1.2_a .epsilon(.001) ) with expansion: - 1.23 != Approx( 1.2 ) + 1.22999999999999998 + != + Approx( 1.19999999999999996 ) Approx.tests.cpp:: PASSED: REQUIRE( d == 1_a .epsilon(.3) ) with expansion: - 1.23 == Approx( 1.0 ) + 1.22999999999999998 == Approx( 1.0 ) ------------------------------------------------------------------------------- A couple of nested sections followed by a failure @@ -2219,12 +2229,12 @@ with expansion: Approx.tests.cpp:: PASSED: REQUIRE( 100.3 != Approx(100.0) ) with expansion: - 100.3 != Approx( 100.0 ) + 100.29999999999999716 != Approx( 100.0 ) Approx.tests.cpp:: PASSED: REQUIRE( 100.3 == Approx(100.0).margin(0.5) ) with expansion: - 100.3 == Approx( 100.0 ) + 100.29999999999999716 == Approx( 100.0 ) ------------------------------------------------------------------------------- An empty test with no assertions @@ -2342,12 +2352,16 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) ) with expansion: - 3.1428571429 == Approx( 3.141 ) + 3.14285714285714279 + == + Approx( 3.14100000000000001 ) Approx.tests.cpp:: PASSED: REQUIRE( divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) ) with expansion: - 3.1428571429 != Approx( 3.141 ) + 3.14285714285714279 + != + Approx( 3.14100000000000001 ) ------------------------------------------------------------------------------- Approximate comparisons with different epsilons @@ -2358,12 +2372,16 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( d != Approx( 1.231 ) ) with expansion: - 1.23 != Approx( 1.231 ) + 1.22999999999999998 + != + Approx( 1.23100000000000009 ) Approx.tests.cpp:: PASSED: REQUIRE( d == Approx( 1.231 ).epsilon( 0.1 ) ) with expansion: - 1.23 == Approx( 1.231 ) + 1.22999999999999998 + == + Approx( 1.23100000000000009 ) ------------------------------------------------------------------------------- Approximate comparisons with floats @@ -2374,7 +2392,9 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( 1.23f == Approx( 1.23f ) ) with expansion: - 1.23f == Approx( 1.2300000191 ) + 1.230000019f + == + Approx( 1.23000001907348633 ) Approx.tests.cpp:: PASSED: REQUIRE( 0.0f == Approx( 0.0f ) ) @@ -2421,12 +2441,16 @@ with expansion: Approx.tests.cpp:: PASSED: REQUIRE( 1.234f == Approx( dMedium ) ) with expansion: - 1.234f == Approx( 1.234 ) + 1.233999968f + == + Approx( 1.23399999999999999 ) Approx.tests.cpp:: PASSED: REQUIRE( dMedium == Approx( 1.234f ) ) with expansion: - 1.234 == Approx( 1.2339999676 ) + 1.23399999999999999 + == + Approx( 1.23399996757507324 ) ------------------------------------------------------------------------------- Arbitrary predicate matcher @@ -3906,7 +3930,7 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( 101.000001 != Approx(100).epsilon(0.01) ) with expansion: - 101.000001 != Approx( 100.0 ) + 101.00000099999999748 != Approx( 100.0 ) Approx.tests.cpp:: PASSED: REQUIRE( std::pow(10, -5) != Approx(std::pow(10, -7)) ) @@ -4033,7 +4057,7 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( 101.01 != Approx(100).epsilon(0.01) ) with expansion: - 101.01 != Approx( 100.0 ) + 101.01000000000000512 != Approx( 100.0 ) ------------------------------------------------------------------------------- Equality checks that should fail @@ -4059,27 +4083,31 @@ with expansion: Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 9.11f ) ) with expansion: - 9.1f == Approx( 9.1099996567 ) + 9.100000381f + == + Approx( 9.10999965667724609 ) Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 9.0f ) ) with expansion: - 9.1f == Approx( 9.0 ) + 9.100000381f == Approx( 9.0 ) Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 1 ) ) with expansion: - 9.1f == Approx( 1.0 ) + 9.100000381f == Approx( 1.0 ) Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 0 ) ) with expansion: - 9.1f == Approx( 0.0 ) + 9.100000381f == Approx( 0.0 ) Condition.tests.cpp:: FAILED: CHECK( data.double_pi == Approx( 3.1415 ) ) with expansion: - 3.1415926535 == Approx( 3.1415 ) + 3.14159265350000005 + == + Approx( 3.14150000000000018 ) Condition.tests.cpp:: FAILED: CHECK( data.str_hello == "goodbye" ) @@ -4104,7 +4132,9 @@ with expansion: Condition.tests.cpp:: FAILED: CHECK( x == Approx( 1.301 ) ) with expansion: - 1.3 == Approx( 1.301 ) + 1.30000000000000027 + == + Approx( 1.30099999999999993 ) ------------------------------------------------------------------------------- Equality checks that should succeed @@ -4120,12 +4150,16 @@ with expansion: Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one == Approx( 9.1f ) ) with expansion: - 9.1f == Approx( 9.1000003815 ) + 9.100000381f + == + Approx( 9.10000038146972656 ) Condition.tests.cpp:: PASSED: REQUIRE( data.double_pi == Approx( 3.1415926535 ) ) with expansion: - 3.1415926535 == Approx( 3.1415926535 ) + 3.14159265350000005 + == + Approx( 3.14159265350000005 ) Condition.tests.cpp:: PASSED: REQUIRE( data.str_hello == "hello" ) @@ -4145,7 +4179,9 @@ with expansion: Condition.tests.cpp:: PASSED: REQUIRE( x == Approx( 1.3 ) ) with expansion: - 1.3 == Approx( 1.3 ) + 1.30000000000000027 + == + Approx( 1.30000000000000004 ) ------------------------------------------------------------------------------- Equals @@ -4477,12 +4513,12 @@ Matchers.tests.cpp: Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 10., WithinRel( 11.1, 0.1 ) ) with expansion: - 10.0 and 11.1 are within 10% of each other + 10.0 and 11.09999999999999964 are within 10% of each other Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 10., !WithinRel( 11.2, 0.1 ) ) with expansion: - 10.0 not and 11.2 are within 10% of each other + 10.0 not and 11.19999999999999929 are within 10% of each other Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1., !WithinRel( 0., 0.99 ) ) @@ -4527,12 +4563,12 @@ with expansion: Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0., !WithinAbs( 1., 0.99 ) ) with expansion: - 0.0 not is within 0.99 of 1.0 + 0.0 not is within 0.98999999999999999 of 1.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0., !WithinAbs( 1., 0.99 ) ) with expansion: - 0.0 not is within 0.99 of 1.0 + 0.0 not is within 0.98999999999999999 of 1.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 11., !WithinAbs( 10., 0.5 ) ) @@ -4552,7 +4588,7 @@ with expansion: Matchers.tests.cpp:: PASSED: REQUIRE_THAT( -10., WithinAbs( -9.6, 0.5 ) ) with expansion: - -10.0 is within 0.5 of -9.6 + -10.0 is within 0.5 of -9.59999999999999964 ------------------------------------------------------------------------------- Floating point matchers: double @@ -4570,8 +4606,8 @@ with expansion: Matchers.tests.cpp:: PASSED: REQUIRE_THAT( nextafter( 1., 2. ), WithinULP( 1., 1 ) ) with expansion: - 1.0 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1. - 0000000000000002e+00]) + 1.00000000000000022 is within 1 ULPs of 1.0000000000000000e+00 ([9. + 9999999999999989e-01, 1.0000000000000002e+00]) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0., WithinULP( nextafter( 0., 1. ), 1 ) ) @@ -4674,12 +4710,12 @@ Matchers.tests.cpp: Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 10.f, WithinRel( 11.1f, 0.1f ) ) with expansion: - 10.0f and 11.1000003815 are within 10% of each other + 10.0f and 11.10000038146972656 are within 10% of each other Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 10.f, !WithinRel( 11.2f, 0.1f ) ) with expansion: - 10.0f not and 11.1999998093 are within 10% of each other + 10.0f not and 11.19999980926513672 are within 10% of each other Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1.f, !WithinRel( 0.f, 0.99f ) ) @@ -4724,12 +4760,12 @@ with expansion: Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0.f, !WithinAbs( 1.f, 0.99f ) ) with expansion: - 0.0f not is within 0.9900000095 of 1.0 + 0.0f not is within 0.99000000953674316 of 1.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0.f, !WithinAbs( 1.f, 0.99f ) ) with expansion: - 0.0f not is within 0.9900000095 of 1.0 + 0.0f not is within 0.99000000953674316 of 1.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0.f, WithinAbs( -0.f, 0 ) ) @@ -4754,7 +4790,7 @@ with expansion: Matchers.tests.cpp:: PASSED: REQUIRE_THAT( -10.f, WithinAbs( -9.6f, 0.5f ) ) with expansion: - -10.0f is within 0.5 of -9.6000003815 + -10.0f is within 0.5 of -9.60000038146972656 ------------------------------------------------------------------------------- Floating point matchers: float @@ -4777,7 +4813,8 @@ with expansion: Matchers.tests.cpp:: PASSED: REQUIRE_THAT( nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) ) with expansion: - 1.0f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) + 1.000000119f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1. + 00000012e+00]) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0.f, WithinULP( nextafter( 0.f, 1.f ), 1 ) ) @@ -4827,7 +4864,8 @@ with expansion: Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) ) with expansion: - 0.0001f ( is within 0.001 of 0.0 or and 0.0 are within 10% of each other ) + 0.0001f ( is within 0.00100000004749745 of 0.0 or and 0.0 are within 10% of + each other ) ------------------------------------------------------------------------------- Floating point matchers: float @@ -6268,7 +6306,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.9 == Approx( -0.9 ) + -0.90000000000000002 + == + Approx( -0.90000000000000002 ) with message: Current expected value is -0.9 @@ -6282,7 +6322,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.8 == Approx( -0.8 ) + -0.80000000000000004 + == + Approx( -0.80000000000000004 ) with message: Current expected value is -0.8 @@ -6296,7 +6338,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.7 == Approx( -0.7 ) + -0.70000000000000007 + == + Approx( -0.70000000000000007 ) with message: Current expected value is -0.7 @@ -6310,7 +6354,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.6 == Approx( -0.6 ) + -0.60000000000000009 + == + Approx( -0.60000000000000009 ) with message: Current expected value is -0.6 @@ -6324,7 +6370,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.5 == Approx( -0.5 ) + -0.50000000000000011 + == + Approx( -0.50000000000000011 ) with message: Current expected value is -0.5 @@ -6338,7 +6386,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.4 == Approx( -0.4 ) + -0.40000000000000013 + == + Approx( -0.40000000000000013 ) with message: Current expected value is -0.4 @@ -6352,7 +6402,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.3 == Approx( -0.3 ) + -0.30000000000000016 + == + Approx( -0.30000000000000016 ) with message: Current expected value is -0.3 @@ -6366,7 +6418,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.2 == Approx( -0.2 ) + -0.20000000000000015 + == + Approx( -0.20000000000000015 ) with message: Current expected value is -0.2 @@ -6380,7 +6434,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.1 == Approx( -0.1 ) + -0.10000000000000014 + == + Approx( -0.10000000000000014 ) with message: Current expected value is -0.1 @@ -6394,7 +6450,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.0 == Approx( -0.0 ) + -0.00000000000000014 + == + Approx( -0.00000000000000014 ) with message: Current expected value is -1.38778e-16 @@ -6408,7 +6466,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.1 == Approx( 0.1 ) + 0.09999999999999987 + == + Approx( 0.09999999999999987 ) with message: Current expected value is 0.1 @@ -6422,7 +6482,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.2 == Approx( 0.2 ) + 0.19999999999999987 + == + Approx( 0.19999999999999987 ) with message: Current expected value is 0.2 @@ -6436,7 +6498,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.3 == Approx( 0.3 ) + 0.29999999999999988 + == + Approx( 0.29999999999999988 ) with message: Current expected value is 0.3 @@ -6450,7 +6514,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.4 == Approx( 0.4 ) + 0.39999999999999991 + == + Approx( 0.39999999999999991 ) with message: Current expected value is 0.4 @@ -6464,7 +6530,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.5 == Approx( 0.5 ) + 0.49999999999999989 + == + Approx( 0.49999999999999989 ) with message: Current expected value is 0.5 @@ -6478,7 +6546,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.6 == Approx( 0.6 ) + 0.59999999999999987 + == + Approx( 0.59999999999999987 ) with message: Current expected value is 0.6 @@ -6492,7 +6562,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.7 == Approx( 0.7 ) + 0.69999999999999984 + == + Approx( 0.69999999999999984 ) with message: Current expected value is 0.7 @@ -6506,7 +6578,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.8 == Approx( 0.8 ) + 0.79999999999999982 + == + Approx( 0.79999999999999982 ) with message: Current expected value is 0.8 @@ -6520,7 +6594,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.9 == Approx( 0.9 ) + 0.8999999999999998 + == + Approx( 0.8999999999999998 ) with message: Current expected value is 0.9 @@ -6534,7 +6610,7 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx( rangeEnd ) ) with expansion: - 1.0 == Approx( 1.0 ) + 0.99999999999999978 == Approx( 1.0 ) GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) @@ -6568,7 +6644,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.7 == Approx( -0.7 ) + -0.69999999999999996 + == + Approx( -0.69999999999999996 ) with message: Current expected value is -0.7 @@ -6582,7 +6660,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.4 == Approx( -0.4 ) + -0.39999999999999997 + == + Approx( -0.39999999999999997 ) with message: Current expected value is -0.4 @@ -6596,7 +6676,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.1 == Approx( -0.1 ) + -0.09999999999999998 + == + Approx( -0.09999999999999998 ) with message: Current expected value is -0.1 @@ -6610,7 +6692,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.2 == Approx( 0.2 ) + 0.20000000000000001 + == + Approx( 0.20000000000000001 ) with message: Current expected value is 0.2 @@ -6667,7 +6751,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.7 == Approx( -0.7 ) + -0.69999999999999996 + == + Approx( -0.69999999999999996 ) with message: Current expected value is -0.7 @@ -6681,7 +6767,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.4 == Approx( -0.4 ) + -0.39999999999999997 + == + Approx( -0.39999999999999997 ) with message: Current expected value is -0.4 @@ -6695,7 +6783,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.1 == Approx( -0.1 ) + -0.09999999999999998 + == + Approx( -0.09999999999999998 ) with message: Current expected value is -0.1 @@ -6709,7 +6799,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.2 == Approx( 0.2 ) + 0.20000000000000001 + == + Approx( 0.20000000000000001 ) with message: Current expected value is 0.2 @@ -6908,22 +7000,30 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( d >= Approx( 1.22 ) ) with expansion: - 1.23 >= Approx( 1.22 ) + 1.22999999999999998 + >= + Approx( 1.21999999999999997 ) Approx.tests.cpp:: PASSED: REQUIRE( d >= Approx( 1.23 ) ) with expansion: - 1.23 >= Approx( 1.23 ) + 1.22999999999999998 + >= + Approx( 1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE_FALSE( d >= Approx( 1.24 ) ) with expansion: - !(1.23 >= Approx( 1.24 )) + !(1.22999999999999998 + >= + Approx( 1.23999999999999999 )) Approx.tests.cpp:: PASSED: REQUIRE( d >= Approx( 1.24 ).epsilon(0.1) ) with expansion: - 1.23 >= Approx( 1.24 ) + 1.22999999999999998 + >= + Approx( 1.23999999999999999 ) ------------------------------------------------------------------------------- Hashers with different seed produce different hash with same test case @@ -7204,12 +7304,16 @@ with expansion: Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one != Approx( 9.1f ) ) with expansion: - 9.1f != Approx( 9.1000003815 ) + 9.100000381f + != + Approx( 9.10000038146972656 ) Condition.tests.cpp:: FAILED: CHECK( data.double_pi != Approx( 3.1415926535 ) ) with expansion: - 3.1415926535 != Approx( 3.1415926535 ) + 3.14159265350000005 + != + Approx( 3.14159265350000005 ) Condition.tests.cpp:: FAILED: CHECK( data.str_hello != "hello" ) @@ -7240,27 +7344,31 @@ with expansion: Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one != Approx( 9.11f ) ) with expansion: - 9.1f != Approx( 9.1099996567 ) + 9.100000381f + != + Approx( 9.10999965667724609 ) Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one != Approx( 9.0f ) ) with expansion: - 9.1f != Approx( 9.0 ) + 9.100000381f != Approx( 9.0 ) Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one != Approx( 1 ) ) with expansion: - 9.1f != Approx( 1.0 ) + 9.100000381f != Approx( 1.0 ) Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one != Approx( 0 ) ) with expansion: - 9.1f != Approx( 0.0 ) + 9.100000381f != Approx( 0.0 ) Condition.tests.cpp:: PASSED: REQUIRE( data.double_pi != Approx( 3.1415 ) ) with expansion: - 3.1415926535 != Approx( 3.1415 ) + 3.14159265350000005 + != + Approx( 3.14150000000000018 ) Condition.tests.cpp:: PASSED: REQUIRE( data.str_hello != "goodbye" ) @@ -7587,22 +7695,30 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( d <= Approx( 1.24 ) ) with expansion: - 1.23 <= Approx( 1.24 ) + 1.22999999999999998 + <= + Approx( 1.23999999999999999 ) Approx.tests.cpp:: PASSED: REQUIRE( d <= Approx( 1.23 ) ) with expansion: - 1.23 <= Approx( 1.23 ) + 1.22999999999999998 + <= + Approx( 1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE_FALSE( d <= Approx( 1.22 ) ) with expansion: - !(1.23 <= Approx( 1.22 )) + !(1.22999999999999998 + <= + Approx( 1.21999999999999997 )) Approx.tests.cpp:: PASSED: REQUIRE( d <= Approx( 1.22 ).epsilon(0.1) ) with expansion: - 1.23 <= Approx( 1.22 ) + 1.22999999999999998 + <= + Approx( 1.21999999999999997 ) ------------------------------------------------------------------------------- ManuallyRegistered @@ -8155,17 +8271,17 @@ with expansion: Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one < 9 ) with expansion: - 9.1f < 9 + 9.100000381f < 9 Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one > 10 ) with expansion: - 9.1f > 10 + 9.100000381f > 10 Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one > 9.2 ) with expansion: - 9.1f > 9.2 + 9.100000381f > 9.19999999999999929 Condition.tests.cpp:: FAILED: CHECK( data.str_hello > "hello" ) @@ -8256,17 +8372,17 @@ with expansion: Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one > 9 ) with expansion: - 9.1f > 9 + 9.100000381f > 9 Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one < 10 ) with expansion: - 9.1f < 10 + 9.100000381f < 10 Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one < 9.2 ) with expansion: - 9.1f < 9.2 + 9.100000381f < 9.19999999999999929 Condition.tests.cpp:: PASSED: REQUIRE( data.str_hello <= "hello" ) @@ -9622,7 +9738,9 @@ with expansion: CmdLine.tests.cpp:: PASSED: REQUIRE( config.benchmarkConfidenceInterval == Catch::Approx(0.99) ) with expansion: - 0.99 == Approx( 0.99 ) + 0.98999999999999999 + == + Approx( 0.98999999999999999 ) ------------------------------------------------------------------------------- Process can be configured on command line @@ -10843,42 +10961,58 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( d == Approx( 1.23 ) ) with expansion: - 1.23 == Approx( 1.23 ) + 1.22999999999999998 + == + Approx( 1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE( d != Approx( 1.22 ) ) with expansion: - 1.23 != Approx( 1.22 ) + 1.22999999999999998 + != + Approx( 1.21999999999999997 ) Approx.tests.cpp:: PASSED: REQUIRE( d != Approx( 1.24 ) ) with expansion: - 1.23 != Approx( 1.24 ) + 1.22999999999999998 + != + Approx( 1.23999999999999999 ) Approx.tests.cpp:: PASSED: REQUIRE( d == 1.23_a ) with expansion: - 1.23 == Approx( 1.23 ) + 1.22999999999999998 + == + Approx( 1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE( d != 1.22_a ) with expansion: - 1.23 != Approx( 1.22 ) + 1.22999999999999998 + != + Approx( 1.21999999999999997 ) Approx.tests.cpp:: PASSED: REQUIRE( Approx( d ) == 1.23 ) with expansion: - Approx( 1.23 ) == 1.23 + Approx( 1.22999999999999998 ) + == + 1.22999999999999998 Approx.tests.cpp:: PASSED: REQUIRE( Approx( d ) != 1.22 ) with expansion: - Approx( 1.23 ) != 1.22 + Approx( 1.22999999999999998 ) + != + 1.21999999999999997 Approx.tests.cpp:: PASSED: REQUIRE( Approx( d ) != 1.24 ) with expansion: - Approx( 1.23 ) != 1.24 + Approx( 1.22999999999999998 ) + != + 1.23999999999999999 Message from section one ------------------------------------------------------------------------------- @@ -13781,7 +13915,7 @@ Exception.tests.cpp: Exception.tests.cpp:: FAILED: due to unexpected exception with message: - 3.14 + 3.14000000000000012 ------------------------------------------------------------------------------- Upcasting special member functions @@ -15025,42 +15159,54 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( d == approx( 1.23 ) ) with expansion: - 1.23 == Approx( 1.23 ) + 1.22999999999999998 + == + Approx( 1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE( d == approx( 1.22 ) ) with expansion: - 1.23 == Approx( 1.22 ) + 1.22999999999999998 + == + Approx( 1.21999999999999997 ) Approx.tests.cpp:: PASSED: REQUIRE( d == approx( 1.24 ) ) with expansion: - 1.23 == Approx( 1.24 ) + 1.22999999999999998 + == + Approx( 1.23999999999999999 ) Approx.tests.cpp:: PASSED: REQUIRE( d != approx( 1.25 ) ) with expansion: - 1.23 != Approx( 1.25 ) + 1.22999999999999998 != Approx( 1.25 ) Approx.tests.cpp:: PASSED: REQUIRE( approx( d ) == 1.23 ) with expansion: - Approx( 1.23 ) == 1.23 + Approx( 1.22999999999999998 ) + == + 1.22999999999999998 Approx.tests.cpp:: PASSED: REQUIRE( approx( d ) == 1.22 ) with expansion: - Approx( 1.23 ) == 1.22 + Approx( 1.22999999999999998 ) + == + 1.21999999999999997 Approx.tests.cpp:: PASSED: REQUIRE( approx( d ) == 1.24 ) with expansion: - Approx( 1.23 ) == 1.24 + Approx( 1.22999999999999998 ) + == + 1.23999999999999999 Approx.tests.cpp:: PASSED: REQUIRE( approx( d ) != 1.25 ) with expansion: - Approx( 1.23 ) != 1.25 + Approx( 1.22999999999999998 ) != 1.25 ------------------------------------------------------------------------------- Variadic macros @@ -16253,17 +16399,23 @@ InternalBenchmark.tests.cpp: InternalBenchmark.tests.cpp:: PASSED: CHECK( erfc_inv(1.103560) == Approx(-0.09203687623843015) ) with expansion: - -0.0920368762 == Approx( -0.0920368762 ) + -0.09203687623843014 + == + Approx( -0.09203687623843015 ) InternalBenchmark.tests.cpp:: PASSED: CHECK( erfc_inv(1.067400) == Approx(-0.05980291115763361) ) with expansion: - -0.0598029112 == Approx( -0.0598029112 ) + -0.05980291115763361 + == + Approx( -0.05980291115763361 ) InternalBenchmark.tests.cpp:: PASSED: CHECK( erfc_inv(0.050000) == Approx(1.38590382434967796) ) with expansion: - 1.3859038243 == Approx( 1.3859038243 ) + 1.38590382434967774 + == + Approx( 1.38590382434967796 ) ------------------------------------------------------------------------------- estimate_clock_resolution @@ -16923,37 +17075,6 @@ Tricky.tests.cpp:: PASSED: with expansion: {?} == {?} -------------------------------------------------------------------------------- -normal_cdf -------------------------------------------------------------------------------- -InternalBenchmark.tests.cpp: -............................................................................... - -InternalBenchmark.tests.cpp:: PASSED: - CHECK( normal_cdf(0.000000) == Approx(0.50000000000000000) ) -with expansion: - 0.5 == Approx( 0.5 ) - -InternalBenchmark.tests.cpp:: PASSED: - CHECK( normal_cdf(1.000000) == Approx(0.84134474606854293) ) -with expansion: - 0.8413447461 == Approx( 0.8413447461 ) - -InternalBenchmark.tests.cpp:: PASSED: - CHECK( normal_cdf(-1.000000) == Approx(0.15865525393145705) ) -with expansion: - 0.1586552539 == Approx( 0.1586552539 ) - -InternalBenchmark.tests.cpp:: PASSED: - CHECK( normal_cdf(2.809729) == Approx(0.99752083845315409) ) -with expansion: - 0.9975208385 == Approx( 0.9975208385 ) - -InternalBenchmark.tests.cpp:: PASSED: - CHECK( normal_cdf(-1.352570) == Approx(0.08809652095066035) ) -with expansion: - 0.088096521 == Approx( 0.088096521 ) - ------------------------------------------------------------------------------- normal_quantile ------------------------------------------------------------------------------- @@ -16963,17 +17084,23 @@ InternalBenchmark.tests.cpp: InternalBenchmark.tests.cpp:: PASSED: CHECK( normal_quantile(0.551780) == Approx(0.13015979861484198) ) with expansion: - 0.1301597986 == Approx( 0.1301597986 ) + 0.13015979861484195 + == + Approx( 0.13015979861484198 ) InternalBenchmark.tests.cpp:: PASSED: CHECK( normal_quantile(0.533700) == Approx(0.08457408802851875) ) with expansion: - 0.084574088 == Approx( 0.084574088 ) + 0.08457408802851875 + == + Approx( 0.08457408802851875 ) InternalBenchmark.tests.cpp:: PASSED: CHECK( normal_quantile(0.025000) == Approx(-1.95996398454005449) ) with expansion: - -1.9599639845 == Approx( -1.9599639845 ) + -1.95996398454005405 + == + Approx( -1.95996398454005449 ) ------------------------------------------------------------------------------- not allowed @@ -18192,14 +18319,14 @@ ToStringTuple.tests.cpp: ............................................................................... ToStringTuple.tests.cpp:: PASSED: - CHECK( "1.2f" == ::Catch::Detail::stringify(float(1.2)) ) + CHECK( "1.5f" == ::Catch::Detail::stringify(float(1.5)) ) with expansion: - "1.2f" == "1.2f" + "1.5f" == "1.5f" ToStringTuple.tests.cpp:: PASSED: - CHECK( "{ 1.2f, 0 }" == ::Catch::Detail::stringify(type{1.2f,0}) ) + CHECK( "{ 1.5f, 0 }" == ::Catch::Detail::stringify(type{1.5f,0}) ) with expansion: - "{ 1.2f, 0 }" == "{ 1.2f, 0 }" + "{ 1.5f, 0 }" == "{ 1.5f, 0 }" ------------------------------------------------------------------------------- tuple @@ -18232,11 +18359,11 @@ ToStringTuple.tests.cpp: ............................................................................... ToStringTuple.tests.cpp:: PASSED: - CHECK( "{ { 42 }, { }, 1.2f }" == ::Catch::Detail::stringify(value) ) + CHECK( "{ { 42 }, { }, 1.5f }" == ::Catch::Detail::stringify(value) ) with expansion: - "{ { 42 }, { }, 1.2f }" + "{ { 42 }, { }, 1.5f }" == - "{ { 42 }, { }, 1.2f }" + "{ { 42 }, { }, 1.5f }" ------------------------------------------------------------------------------- uniform samples @@ -18262,7 +18389,7 @@ with expansion: InternalBenchmark.tests.cpp:: PASSED: CHECK( e.confidence_interval == 0.95 ) with expansion: - 0.95 == 0.95 + 0.94999999999999996 == 0.94999999999999996 ------------------------------------------------------------------------------- uniform_integer_distribution can return the bounds @@ -18767,6 +18894,6 @@ Misc.tests.cpp: Misc.tests.cpp:: PASSED: =============================================================================== -test cases: 417 | 312 passed | 85 failed | 6 skipped | 14 failed as expected -assertions: 2260 | 2079 passed | 146 failed | 35 failed as expected +test cases: 416 | 311 passed | 85 failed | 6 skipped | 14 failed as expected +assertions: 2255 | 2074 passed | 146 failed | 35 failed as expected diff --git a/third_party/Catch2/tests/SelfTest/Baselines/console.sw.multi.approved.txt b/third_party/Catch2/tests/SelfTest/Baselines/console.sw.multi.approved.txt index e8fd62f7..f70c0d6f 100644 --- a/third_party/Catch2/tests/SelfTest/Baselines/console.sw.multi.approved.txt +++ b/third_party/Catch2/tests/SelfTest/Baselines/console.sw.multi.approved.txt @@ -2123,32 +2123,42 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( d == 1.23_a ) with expansion: - 1.23 == Approx( 1.23 ) + 1.22999999999999998 + == + Approx( 1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE( d != 1.22_a ) with expansion: - 1.23 != Approx( 1.22 ) + 1.22999999999999998 + != + Approx( 1.21999999999999997 ) Approx.tests.cpp:: PASSED: REQUIRE( -d == -1.23_a ) with expansion: - -1.23 == Approx( -1.23 ) + -1.22999999999999998 + == + Approx( -1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE( d == 1.2_a .epsilon(.1) ) with expansion: - 1.23 == Approx( 1.2 ) + 1.22999999999999998 + == + Approx( 1.19999999999999996 ) Approx.tests.cpp:: PASSED: REQUIRE( d != 1.2_a .epsilon(.001) ) with expansion: - 1.23 != Approx( 1.2 ) + 1.22999999999999998 + != + Approx( 1.19999999999999996 ) Approx.tests.cpp:: PASSED: REQUIRE( d == 1_a .epsilon(.3) ) with expansion: - 1.23 == Approx( 1.0 ) + 1.22999999999999998 == Approx( 1.0 ) ------------------------------------------------------------------------------- A couple of nested sections followed by a failure @@ -2217,12 +2227,12 @@ with expansion: Approx.tests.cpp:: PASSED: REQUIRE( 100.3 != Approx(100.0) ) with expansion: - 100.3 != Approx( 100.0 ) + 100.29999999999999716 != Approx( 100.0 ) Approx.tests.cpp:: PASSED: REQUIRE( 100.3 == Approx(100.0).margin(0.5) ) with expansion: - 100.3 == Approx( 100.0 ) + 100.29999999999999716 == Approx( 100.0 ) ------------------------------------------------------------------------------- An empty test with no assertions @@ -2340,12 +2350,16 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) ) with expansion: - 3.1428571429 == Approx( 3.141 ) + 3.14285714285714279 + == + Approx( 3.14100000000000001 ) Approx.tests.cpp:: PASSED: REQUIRE( divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) ) with expansion: - 3.1428571429 != Approx( 3.141 ) + 3.14285714285714279 + != + Approx( 3.14100000000000001 ) ------------------------------------------------------------------------------- Approximate comparisons with different epsilons @@ -2356,12 +2370,16 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( d != Approx( 1.231 ) ) with expansion: - 1.23 != Approx( 1.231 ) + 1.22999999999999998 + != + Approx( 1.23100000000000009 ) Approx.tests.cpp:: PASSED: REQUIRE( d == Approx( 1.231 ).epsilon( 0.1 ) ) with expansion: - 1.23 == Approx( 1.231 ) + 1.22999999999999998 + == + Approx( 1.23100000000000009 ) ------------------------------------------------------------------------------- Approximate comparisons with floats @@ -2372,7 +2390,9 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( 1.23f == Approx( 1.23f ) ) with expansion: - 1.23f == Approx( 1.2300000191 ) + 1.230000019f + == + Approx( 1.23000001907348633 ) Approx.tests.cpp:: PASSED: REQUIRE( 0.0f == Approx( 0.0f ) ) @@ -2419,12 +2439,16 @@ with expansion: Approx.tests.cpp:: PASSED: REQUIRE( 1.234f == Approx( dMedium ) ) with expansion: - 1.234f == Approx( 1.234 ) + 1.233999968f + == + Approx( 1.23399999999999999 ) Approx.tests.cpp:: PASSED: REQUIRE( dMedium == Approx( 1.234f ) ) with expansion: - 1.234 == Approx( 1.2339999676 ) + 1.23399999999999999 + == + Approx( 1.23399996757507324 ) ------------------------------------------------------------------------------- Arbitrary predicate matcher @@ -3904,7 +3928,7 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( 101.000001 != Approx(100).epsilon(0.01) ) with expansion: - 101.000001 != Approx( 100.0 ) + 101.00000099999999748 != Approx( 100.0 ) Approx.tests.cpp:: PASSED: REQUIRE( std::pow(10, -5) != Approx(std::pow(10, -7)) ) @@ -4031,7 +4055,7 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( 101.01 != Approx(100).epsilon(0.01) ) with expansion: - 101.01 != Approx( 100.0 ) + 101.01000000000000512 != Approx( 100.0 ) ------------------------------------------------------------------------------- Equality checks that should fail @@ -4057,27 +4081,31 @@ with expansion: Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 9.11f ) ) with expansion: - 9.1f == Approx( 9.1099996567 ) + 9.100000381f + == + Approx( 9.10999965667724609 ) Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 9.0f ) ) with expansion: - 9.1f == Approx( 9.0 ) + 9.100000381f == Approx( 9.0 ) Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 1 ) ) with expansion: - 9.1f == Approx( 1.0 ) + 9.100000381f == Approx( 1.0 ) Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one == Approx( 0 ) ) with expansion: - 9.1f == Approx( 0.0 ) + 9.100000381f == Approx( 0.0 ) Condition.tests.cpp:: FAILED: CHECK( data.double_pi == Approx( 3.1415 ) ) with expansion: - 3.1415926535 == Approx( 3.1415 ) + 3.14159265350000005 + == + Approx( 3.14150000000000018 ) Condition.tests.cpp:: FAILED: CHECK( data.str_hello == "goodbye" ) @@ -4102,7 +4130,9 @@ with expansion: Condition.tests.cpp:: FAILED: CHECK( x == Approx( 1.301 ) ) with expansion: - 1.3 == Approx( 1.301 ) + 1.30000000000000027 + == + Approx( 1.30099999999999993 ) ------------------------------------------------------------------------------- Equality checks that should succeed @@ -4118,12 +4148,16 @@ with expansion: Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one == Approx( 9.1f ) ) with expansion: - 9.1f == Approx( 9.1000003815 ) + 9.100000381f + == + Approx( 9.10000038146972656 ) Condition.tests.cpp:: PASSED: REQUIRE( data.double_pi == Approx( 3.1415926535 ) ) with expansion: - 3.1415926535 == Approx( 3.1415926535 ) + 3.14159265350000005 + == + Approx( 3.14159265350000005 ) Condition.tests.cpp:: PASSED: REQUIRE( data.str_hello == "hello" ) @@ -4143,7 +4177,9 @@ with expansion: Condition.tests.cpp:: PASSED: REQUIRE( x == Approx( 1.3 ) ) with expansion: - 1.3 == Approx( 1.3 ) + 1.30000000000000027 + == + Approx( 1.30000000000000004 ) ------------------------------------------------------------------------------- Equals @@ -4475,12 +4511,12 @@ Matchers.tests.cpp: Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 10., WithinRel( 11.1, 0.1 ) ) with expansion: - 10.0 and 11.1 are within 10% of each other + 10.0 and 11.09999999999999964 are within 10% of each other Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 10., !WithinRel( 11.2, 0.1 ) ) with expansion: - 10.0 not and 11.2 are within 10% of each other + 10.0 not and 11.19999999999999929 are within 10% of each other Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1., !WithinRel( 0., 0.99 ) ) @@ -4525,12 +4561,12 @@ with expansion: Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0., !WithinAbs( 1., 0.99 ) ) with expansion: - 0.0 not is within 0.99 of 1.0 + 0.0 not is within 0.98999999999999999 of 1.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0., !WithinAbs( 1., 0.99 ) ) with expansion: - 0.0 not is within 0.99 of 1.0 + 0.0 not is within 0.98999999999999999 of 1.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 11., !WithinAbs( 10., 0.5 ) ) @@ -4550,7 +4586,7 @@ with expansion: Matchers.tests.cpp:: PASSED: REQUIRE_THAT( -10., WithinAbs( -9.6, 0.5 ) ) with expansion: - -10.0 is within 0.5 of -9.6 + -10.0 is within 0.5 of -9.59999999999999964 ------------------------------------------------------------------------------- Floating point matchers: double @@ -4568,8 +4604,8 @@ with expansion: Matchers.tests.cpp:: PASSED: REQUIRE_THAT( nextafter( 1., 2. ), WithinULP( 1., 1 ) ) with expansion: - 1.0 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1. - 0000000000000002e+00]) + 1.00000000000000022 is within 1 ULPs of 1.0000000000000000e+00 ([9. + 9999999999999989e-01, 1.0000000000000002e+00]) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0., WithinULP( nextafter( 0., 1. ), 1 ) ) @@ -4672,12 +4708,12 @@ Matchers.tests.cpp: Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 10.f, WithinRel( 11.1f, 0.1f ) ) with expansion: - 10.0f and 11.1000003815 are within 10% of each other + 10.0f and 11.10000038146972656 are within 10% of each other Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 10.f, !WithinRel( 11.2f, 0.1f ) ) with expansion: - 10.0f not and 11.1999998093 are within 10% of each other + 10.0f not and 11.19999980926513672 are within 10% of each other Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 1.f, !WithinRel( 0.f, 0.99f ) ) @@ -4722,12 +4758,12 @@ with expansion: Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0.f, !WithinAbs( 1.f, 0.99f ) ) with expansion: - 0.0f not is within 0.9900000095 of 1.0 + 0.0f not is within 0.99000000953674316 of 1.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0.f, !WithinAbs( 1.f, 0.99f ) ) with expansion: - 0.0f not is within 0.9900000095 of 1.0 + 0.0f not is within 0.99000000953674316 of 1.0 Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0.f, WithinAbs( -0.f, 0 ) ) @@ -4752,7 +4788,7 @@ with expansion: Matchers.tests.cpp:: PASSED: REQUIRE_THAT( -10.f, WithinAbs( -9.6f, 0.5f ) ) with expansion: - -10.0f is within 0.5 of -9.6000003815 + -10.0f is within 0.5 of -9.60000038146972656 ------------------------------------------------------------------------------- Floating point matchers: float @@ -4775,7 +4811,8 @@ with expansion: Matchers.tests.cpp:: PASSED: REQUIRE_THAT( nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) ) with expansion: - 1.0f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) + 1.000000119f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1. + 00000012e+00]) Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0.f, WithinULP( nextafter( 0.f, 1.f ), 1 ) ) @@ -4825,7 +4862,8 @@ with expansion: Matchers.tests.cpp:: PASSED: REQUIRE_THAT( 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) ) with expansion: - 0.0001f ( is within 0.001 of 0.0 or and 0.0 are within 10% of each other ) + 0.0001f ( is within 0.00100000004749745 of 0.0 or and 0.0 are within 10% of + each other ) ------------------------------------------------------------------------------- Floating point matchers: float @@ -6266,7 +6304,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.9 == Approx( -0.9 ) + -0.90000000000000002 + == + Approx( -0.90000000000000002 ) with message: Current expected value is -0.9 @@ -6280,7 +6320,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.8 == Approx( -0.8 ) + -0.80000000000000004 + == + Approx( -0.80000000000000004 ) with message: Current expected value is -0.8 @@ -6294,7 +6336,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.7 == Approx( -0.7 ) + -0.70000000000000007 + == + Approx( -0.70000000000000007 ) with message: Current expected value is -0.7 @@ -6308,7 +6352,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.6 == Approx( -0.6 ) + -0.60000000000000009 + == + Approx( -0.60000000000000009 ) with message: Current expected value is -0.6 @@ -6322,7 +6368,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.5 == Approx( -0.5 ) + -0.50000000000000011 + == + Approx( -0.50000000000000011 ) with message: Current expected value is -0.5 @@ -6336,7 +6384,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.4 == Approx( -0.4 ) + -0.40000000000000013 + == + Approx( -0.40000000000000013 ) with message: Current expected value is -0.4 @@ -6350,7 +6400,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.3 == Approx( -0.3 ) + -0.30000000000000016 + == + Approx( -0.30000000000000016 ) with message: Current expected value is -0.3 @@ -6364,7 +6416,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.2 == Approx( -0.2 ) + -0.20000000000000015 + == + Approx( -0.20000000000000015 ) with message: Current expected value is -0.2 @@ -6378,7 +6432,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.1 == Approx( -0.1 ) + -0.10000000000000014 + == + Approx( -0.10000000000000014 ) with message: Current expected value is -0.1 @@ -6392,7 +6448,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.0 == Approx( -0.0 ) + -0.00000000000000014 + == + Approx( -0.00000000000000014 ) with message: Current expected value is -1.38778e-16 @@ -6406,7 +6464,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.1 == Approx( 0.1 ) + 0.09999999999999987 + == + Approx( 0.09999999999999987 ) with message: Current expected value is 0.1 @@ -6420,7 +6480,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.2 == Approx( 0.2 ) + 0.19999999999999987 + == + Approx( 0.19999999999999987 ) with message: Current expected value is 0.2 @@ -6434,7 +6496,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.3 == Approx( 0.3 ) + 0.29999999999999988 + == + Approx( 0.29999999999999988 ) with message: Current expected value is 0.3 @@ -6448,7 +6512,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.4 == Approx( 0.4 ) + 0.39999999999999991 + == + Approx( 0.39999999999999991 ) with message: Current expected value is 0.4 @@ -6462,7 +6528,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.5 == Approx( 0.5 ) + 0.49999999999999989 + == + Approx( 0.49999999999999989 ) with message: Current expected value is 0.5 @@ -6476,7 +6544,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.6 == Approx( 0.6 ) + 0.59999999999999987 + == + Approx( 0.59999999999999987 ) with message: Current expected value is 0.6 @@ -6490,7 +6560,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.7 == Approx( 0.7 ) + 0.69999999999999984 + == + Approx( 0.69999999999999984 ) with message: Current expected value is 0.7 @@ -6504,7 +6576,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.8 == Approx( 0.8 ) + 0.79999999999999982 + == + Approx( 0.79999999999999982 ) with message: Current expected value is 0.8 @@ -6518,7 +6592,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.9 == Approx( 0.9 ) + 0.8999999999999998 + == + Approx( 0.8999999999999998 ) with message: Current expected value is 0.9 @@ -6532,7 +6608,7 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx( rangeEnd ) ) with expansion: - 1.0 == Approx( 1.0 ) + 0.99999999999999978 == Approx( 1.0 ) GeneratorsImpl.tests.cpp:: PASSED: REQUIRE_FALSE( gen.next() ) @@ -6566,7 +6642,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.7 == Approx( -0.7 ) + -0.69999999999999996 + == + Approx( -0.69999999999999996 ) with message: Current expected value is -0.7 @@ -6580,7 +6658,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.4 == Approx( -0.4 ) + -0.39999999999999997 + == + Approx( -0.39999999999999997 ) with message: Current expected value is -0.4 @@ -6594,7 +6674,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.1 == Approx( -0.1 ) + -0.09999999999999998 + == + Approx( -0.09999999999999998 ) with message: Current expected value is -0.1 @@ -6608,7 +6690,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.2 == Approx( 0.2 ) + 0.20000000000000001 + == + Approx( 0.20000000000000001 ) with message: Current expected value is 0.2 @@ -6665,7 +6749,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.7 == Approx( -0.7 ) + -0.69999999999999996 + == + Approx( -0.69999999999999996 ) with message: Current expected value is -0.7 @@ -6679,7 +6765,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.4 == Approx( -0.4 ) + -0.39999999999999997 + == + Approx( -0.39999999999999997 ) with message: Current expected value is -0.4 @@ -6693,7 +6781,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - -0.1 == Approx( -0.1 ) + -0.09999999999999998 + == + Approx( -0.09999999999999998 ) with message: Current expected value is -0.1 @@ -6707,7 +6797,9 @@ with message: GeneratorsImpl.tests.cpp:: PASSED: REQUIRE( gen.get() == Approx(expected) ) with expansion: - 0.2 == Approx( 0.2 ) + 0.20000000000000001 + == + Approx( 0.20000000000000001 ) with message: Current expected value is 0.2 @@ -6906,22 +6998,30 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( d >= Approx( 1.22 ) ) with expansion: - 1.23 >= Approx( 1.22 ) + 1.22999999999999998 + >= + Approx( 1.21999999999999997 ) Approx.tests.cpp:: PASSED: REQUIRE( d >= Approx( 1.23 ) ) with expansion: - 1.23 >= Approx( 1.23 ) + 1.22999999999999998 + >= + Approx( 1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE_FALSE( d >= Approx( 1.24 ) ) with expansion: - !(1.23 >= Approx( 1.24 )) + !(1.22999999999999998 + >= + Approx( 1.23999999999999999 )) Approx.tests.cpp:: PASSED: REQUIRE( d >= Approx( 1.24 ).epsilon(0.1) ) with expansion: - 1.23 >= Approx( 1.24 ) + 1.22999999999999998 + >= + Approx( 1.23999999999999999 ) ------------------------------------------------------------------------------- Hashers with different seed produce different hash with same test case @@ -7202,12 +7302,16 @@ with expansion: Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one != Approx( 9.1f ) ) with expansion: - 9.1f != Approx( 9.1000003815 ) + 9.100000381f + != + Approx( 9.10000038146972656 ) Condition.tests.cpp:: FAILED: CHECK( data.double_pi != Approx( 3.1415926535 ) ) with expansion: - 3.1415926535 != Approx( 3.1415926535 ) + 3.14159265350000005 + != + Approx( 3.14159265350000005 ) Condition.tests.cpp:: FAILED: CHECK( data.str_hello != "hello" ) @@ -7238,27 +7342,31 @@ with expansion: Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one != Approx( 9.11f ) ) with expansion: - 9.1f != Approx( 9.1099996567 ) + 9.100000381f + != + Approx( 9.10999965667724609 ) Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one != Approx( 9.0f ) ) with expansion: - 9.1f != Approx( 9.0 ) + 9.100000381f != Approx( 9.0 ) Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one != Approx( 1 ) ) with expansion: - 9.1f != Approx( 1.0 ) + 9.100000381f != Approx( 1.0 ) Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one != Approx( 0 ) ) with expansion: - 9.1f != Approx( 0.0 ) + 9.100000381f != Approx( 0.0 ) Condition.tests.cpp:: PASSED: REQUIRE( data.double_pi != Approx( 3.1415 ) ) with expansion: - 3.1415926535 != Approx( 3.1415 ) + 3.14159265350000005 + != + Approx( 3.14150000000000018 ) Condition.tests.cpp:: PASSED: REQUIRE( data.str_hello != "goodbye" ) @@ -7585,22 +7693,30 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( d <= Approx( 1.24 ) ) with expansion: - 1.23 <= Approx( 1.24 ) + 1.22999999999999998 + <= + Approx( 1.23999999999999999 ) Approx.tests.cpp:: PASSED: REQUIRE( d <= Approx( 1.23 ) ) with expansion: - 1.23 <= Approx( 1.23 ) + 1.22999999999999998 + <= + Approx( 1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE_FALSE( d <= Approx( 1.22 ) ) with expansion: - !(1.23 <= Approx( 1.22 )) + !(1.22999999999999998 + <= + Approx( 1.21999999999999997 )) Approx.tests.cpp:: PASSED: REQUIRE( d <= Approx( 1.22 ).epsilon(0.1) ) with expansion: - 1.23 <= Approx( 1.22 ) + 1.22999999999999998 + <= + Approx( 1.21999999999999997 ) ------------------------------------------------------------------------------- ManuallyRegistered @@ -8153,17 +8269,17 @@ with expansion: Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one < 9 ) with expansion: - 9.1f < 9 + 9.100000381f < 9 Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one > 10 ) with expansion: - 9.1f > 10 + 9.100000381f > 10 Condition.tests.cpp:: FAILED: CHECK( data.float_nine_point_one > 9.2 ) with expansion: - 9.1f > 9.2 + 9.100000381f > 9.19999999999999929 Condition.tests.cpp:: FAILED: CHECK( data.str_hello > "hello" ) @@ -8254,17 +8370,17 @@ with expansion: Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one > 9 ) with expansion: - 9.1f > 9 + 9.100000381f > 9 Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one < 10 ) with expansion: - 9.1f < 10 + 9.100000381f < 10 Condition.tests.cpp:: PASSED: REQUIRE( data.float_nine_point_one < 9.2 ) with expansion: - 9.1f < 9.2 + 9.100000381f < 9.19999999999999929 Condition.tests.cpp:: PASSED: REQUIRE( data.str_hello <= "hello" ) @@ -9620,7 +9736,9 @@ with expansion: CmdLine.tests.cpp:: PASSED: REQUIRE( config.benchmarkConfidenceInterval == Catch::Approx(0.99) ) with expansion: - 0.99 == Approx( 0.99 ) + 0.98999999999999999 + == + Approx( 0.98999999999999999 ) ------------------------------------------------------------------------------- Process can be configured on command line @@ -10838,42 +10956,58 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( d == Approx( 1.23 ) ) with expansion: - 1.23 == Approx( 1.23 ) + 1.22999999999999998 + == + Approx( 1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE( d != Approx( 1.22 ) ) with expansion: - 1.23 != Approx( 1.22 ) + 1.22999999999999998 + != + Approx( 1.21999999999999997 ) Approx.tests.cpp:: PASSED: REQUIRE( d != Approx( 1.24 ) ) with expansion: - 1.23 != Approx( 1.24 ) + 1.22999999999999998 + != + Approx( 1.23999999999999999 ) Approx.tests.cpp:: PASSED: REQUIRE( d == 1.23_a ) with expansion: - 1.23 == Approx( 1.23 ) + 1.22999999999999998 + == + Approx( 1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE( d != 1.22_a ) with expansion: - 1.23 != Approx( 1.22 ) + 1.22999999999999998 + != + Approx( 1.21999999999999997 ) Approx.tests.cpp:: PASSED: REQUIRE( Approx( d ) == 1.23 ) with expansion: - Approx( 1.23 ) == 1.23 + Approx( 1.22999999999999998 ) + == + 1.22999999999999998 Approx.tests.cpp:: PASSED: REQUIRE( Approx( d ) != 1.22 ) with expansion: - Approx( 1.23 ) != 1.22 + Approx( 1.22999999999999998 ) + != + 1.21999999999999997 Approx.tests.cpp:: PASSED: REQUIRE( Approx( d ) != 1.24 ) with expansion: - Approx( 1.23 ) != 1.24 + Approx( 1.22999999999999998 ) + != + 1.23999999999999999 ------------------------------------------------------------------------------- Standard output from all sections is reported @@ -13774,7 +13908,7 @@ Exception.tests.cpp: Exception.tests.cpp:: FAILED: due to unexpected exception with message: - 3.14 + 3.14000000000000012 ------------------------------------------------------------------------------- Upcasting special member functions @@ -15018,42 +15152,54 @@ Approx.tests.cpp: Approx.tests.cpp:: PASSED: REQUIRE( d == approx( 1.23 ) ) with expansion: - 1.23 == Approx( 1.23 ) + 1.22999999999999998 + == + Approx( 1.22999999999999998 ) Approx.tests.cpp:: PASSED: REQUIRE( d == approx( 1.22 ) ) with expansion: - 1.23 == Approx( 1.22 ) + 1.22999999999999998 + == + Approx( 1.21999999999999997 ) Approx.tests.cpp:: PASSED: REQUIRE( d == approx( 1.24 ) ) with expansion: - 1.23 == Approx( 1.24 ) + 1.22999999999999998 + == + Approx( 1.23999999999999999 ) Approx.tests.cpp:: PASSED: REQUIRE( d != approx( 1.25 ) ) with expansion: - 1.23 != Approx( 1.25 ) + 1.22999999999999998 != Approx( 1.25 ) Approx.tests.cpp:: PASSED: REQUIRE( approx( d ) == 1.23 ) with expansion: - Approx( 1.23 ) == 1.23 + Approx( 1.22999999999999998 ) + == + 1.22999999999999998 Approx.tests.cpp:: PASSED: REQUIRE( approx( d ) == 1.22 ) with expansion: - Approx( 1.23 ) == 1.22 + Approx( 1.22999999999999998 ) + == + 1.21999999999999997 Approx.tests.cpp:: PASSED: REQUIRE( approx( d ) == 1.24 ) with expansion: - Approx( 1.23 ) == 1.24 + Approx( 1.22999999999999998 ) + == + 1.23999999999999999 Approx.tests.cpp:: PASSED: REQUIRE( approx( d ) != 1.25 ) with expansion: - Approx( 1.23 ) != 1.25 + Approx( 1.22999999999999998 ) != 1.25 ------------------------------------------------------------------------------- Variadic macros @@ -16246,17 +16392,23 @@ InternalBenchmark.tests.cpp: InternalBenchmark.tests.cpp:: PASSED: CHECK( erfc_inv(1.103560) == Approx(-0.09203687623843015) ) with expansion: - -0.0920368762 == Approx( -0.0920368762 ) + -0.09203687623843014 + == + Approx( -0.09203687623843015 ) InternalBenchmark.tests.cpp:: PASSED: CHECK( erfc_inv(1.067400) == Approx(-0.05980291115763361) ) with expansion: - -0.0598029112 == Approx( -0.0598029112 ) + -0.05980291115763361 + == + Approx( -0.05980291115763361 ) InternalBenchmark.tests.cpp:: PASSED: CHECK( erfc_inv(0.050000) == Approx(1.38590382434967796) ) with expansion: - 1.3859038243 == Approx( 1.3859038243 ) + 1.38590382434967774 + == + Approx( 1.38590382434967796 ) ------------------------------------------------------------------------------- estimate_clock_resolution @@ -16912,37 +17064,6 @@ Tricky.tests.cpp:: PASSED: with expansion: {?} == {?} -------------------------------------------------------------------------------- -normal_cdf -------------------------------------------------------------------------------- -InternalBenchmark.tests.cpp: -............................................................................... - -InternalBenchmark.tests.cpp:: PASSED: - CHECK( normal_cdf(0.000000) == Approx(0.50000000000000000) ) -with expansion: - 0.5 == Approx( 0.5 ) - -InternalBenchmark.tests.cpp:: PASSED: - CHECK( normal_cdf(1.000000) == Approx(0.84134474606854293) ) -with expansion: - 0.8413447461 == Approx( 0.8413447461 ) - -InternalBenchmark.tests.cpp:: PASSED: - CHECK( normal_cdf(-1.000000) == Approx(0.15865525393145705) ) -with expansion: - 0.1586552539 == Approx( 0.1586552539 ) - -InternalBenchmark.tests.cpp:: PASSED: - CHECK( normal_cdf(2.809729) == Approx(0.99752083845315409) ) -with expansion: - 0.9975208385 == Approx( 0.9975208385 ) - -InternalBenchmark.tests.cpp:: PASSED: - CHECK( normal_cdf(-1.352570) == Approx(0.08809652095066035) ) -with expansion: - 0.088096521 == Approx( 0.088096521 ) - ------------------------------------------------------------------------------- normal_quantile ------------------------------------------------------------------------------- @@ -16952,17 +17073,23 @@ InternalBenchmark.tests.cpp: InternalBenchmark.tests.cpp:: PASSED: CHECK( normal_quantile(0.551780) == Approx(0.13015979861484198) ) with expansion: - 0.1301597986 == Approx( 0.1301597986 ) + 0.13015979861484195 + == + Approx( 0.13015979861484198 ) InternalBenchmark.tests.cpp:: PASSED: CHECK( normal_quantile(0.533700) == Approx(0.08457408802851875) ) with expansion: - 0.084574088 == Approx( 0.084574088 ) + 0.08457408802851875 + == + Approx( 0.08457408802851875 ) InternalBenchmark.tests.cpp:: PASSED: CHECK( normal_quantile(0.025000) == Approx(-1.95996398454005449) ) with expansion: - -1.9599639845 == Approx( -1.9599639845 ) + -1.95996398454005405 + == + Approx( -1.95996398454005449 ) ------------------------------------------------------------------------------- not allowed @@ -18181,14 +18308,14 @@ ToStringTuple.tests.cpp: ............................................................................... ToStringTuple.tests.cpp:: PASSED: - CHECK( "1.2f" == ::Catch::Detail::stringify(float(1.2)) ) + CHECK( "1.5f" == ::Catch::Detail::stringify(float(1.5)) ) with expansion: - "1.2f" == "1.2f" + "1.5f" == "1.5f" ToStringTuple.tests.cpp:: PASSED: - CHECK( "{ 1.2f, 0 }" == ::Catch::Detail::stringify(type{1.2f,0}) ) + CHECK( "{ 1.5f, 0 }" == ::Catch::Detail::stringify(type{1.5f,0}) ) with expansion: - "{ 1.2f, 0 }" == "{ 1.2f, 0 }" + "{ 1.5f, 0 }" == "{ 1.5f, 0 }" ------------------------------------------------------------------------------- tuple @@ -18221,11 +18348,11 @@ ToStringTuple.tests.cpp: ............................................................................... ToStringTuple.tests.cpp:: PASSED: - CHECK( "{ { 42 }, { }, 1.2f }" == ::Catch::Detail::stringify(value) ) + CHECK( "{ { 42 }, { }, 1.5f }" == ::Catch::Detail::stringify(value) ) with expansion: - "{ { 42 }, { }, 1.2f }" + "{ { 42 }, { }, 1.5f }" == - "{ { 42 }, { }, 1.2f }" + "{ { 42 }, { }, 1.5f }" ------------------------------------------------------------------------------- uniform samples @@ -18251,7 +18378,7 @@ with expansion: InternalBenchmark.tests.cpp:: PASSED: CHECK( e.confidence_interval == 0.95 ) with expansion: - 0.95 == 0.95 + 0.94999999999999996 == 0.94999999999999996 ------------------------------------------------------------------------------- uniform_integer_distribution can return the bounds @@ -18756,6 +18883,6 @@ Misc.tests.cpp: Misc.tests.cpp:: PASSED: =============================================================================== -test cases: 417 | 312 passed | 85 failed | 6 skipped | 14 failed as expected -assertions: 2260 | 2079 passed | 146 failed | 35 failed as expected +test cases: 416 | 311 passed | 85 failed | 6 skipped | 14 failed as expected +assertions: 2255 | 2074 passed | 146 failed | 35 failed as expected diff --git a/third_party/Catch2/tests/SelfTest/Baselines/junit.sw.approved.txt b/third_party/Catch2/tests/SelfTest/Baselines/junit.sw.approved.txt index bd08461a..1888139a 100644 --- a/third_party/Catch2/tests/SelfTest/Baselines/junit.sw.approved.txt +++ b/third_party/Catch2/tests/SelfTest/Baselines/junit.sw.approved.txt @@ -1,7 +1,7 @@ - + @@ -517,35 +517,39 @@ at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one == Approx( 9.11f ) ) with expansion: - 9.1f == Approx( 9.1099996567 ) + 9.100000381f + == + Approx( 9.10999965667724609 ) at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one == Approx( 9.0f ) ) with expansion: - 9.1f == Approx( 9.0 ) + 9.100000381f == Approx( 9.0 ) at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one == Approx( 1 ) ) with expansion: - 9.1f == Approx( 1.0 ) + 9.100000381f == Approx( 1.0 ) at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one == Approx( 0 ) ) with expansion: - 9.1f == Approx( 0.0 ) + 9.100000381f == Approx( 0.0 ) at Condition.tests.cpp: FAILED: CHECK( data.double_pi == Approx( 3.1415 ) ) with expansion: - 3.1415926535 == Approx( 3.1415 ) + 3.14159265350000005 + == + Approx( 3.14150000000000018 ) at Condition.tests.cpp: @@ -580,7 +584,9 @@ at Condition.tests.cpp: FAILED: CHECK( x == Approx( 1.301 ) ) with expansion: - 1.3 == Approx( 1.301 ) + 1.30000000000000027 + == + Approx( 1.30099999999999993 ) at Condition.tests.cpp: @@ -828,14 +834,18 @@ at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one != Approx( 9.1f ) ) with expansion: - 9.1f != Approx( 9.1000003815 ) + 9.100000381f + != + Approx( 9.10000038146972656 ) at Condition.tests.cpp: FAILED: CHECK( data.double_pi != Approx( 3.1415926535 ) ) with expansion: - 3.1415926535 != Approx( 3.1415926535 ) + 3.14159265350000005 + != + Approx( 3.14159265350000005 ) at Condition.tests.cpp: @@ -1011,21 +1021,21 @@ at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one < 9 ) with expansion: - 9.1f < 9 + 9.100000381f < 9 at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one > 10 ) with expansion: - 9.1f > 10 + 9.100000381f > 10 at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one > 9.2 ) with expansion: - 9.1f > 9.2 + 9.100000381f > 9.19999999999999929 at Condition.tests.cpp: @@ -1453,7 +1463,7 @@ at Exception.tests.cpp: FAILED: -3.14 +3.14000000000000012 at Exception.tests.cpp: @@ -1922,7 +1932,6 @@ b1! - diff --git a/third_party/Catch2/tests/SelfTest/Baselines/junit.sw.multi.approved.txt b/third_party/Catch2/tests/SelfTest/Baselines/junit.sw.multi.approved.txt index 052ffd9e..b594c8c0 100644 --- a/third_party/Catch2/tests/SelfTest/Baselines/junit.sw.multi.approved.txt +++ b/third_party/Catch2/tests/SelfTest/Baselines/junit.sw.multi.approved.txt @@ -1,6 +1,6 @@ - + @@ -516,35 +516,39 @@ at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one == Approx( 9.11f ) ) with expansion: - 9.1f == Approx( 9.1099996567 ) + 9.100000381f + == + Approx( 9.10999965667724609 ) at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one == Approx( 9.0f ) ) with expansion: - 9.1f == Approx( 9.0 ) + 9.100000381f == Approx( 9.0 ) at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one == Approx( 1 ) ) with expansion: - 9.1f == Approx( 1.0 ) + 9.100000381f == Approx( 1.0 ) at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one == Approx( 0 ) ) with expansion: - 9.1f == Approx( 0.0 ) + 9.100000381f == Approx( 0.0 ) at Condition.tests.cpp: FAILED: CHECK( data.double_pi == Approx( 3.1415 ) ) with expansion: - 3.1415926535 == Approx( 3.1415 ) + 3.14159265350000005 + == + Approx( 3.14150000000000018 ) at Condition.tests.cpp: @@ -579,7 +583,9 @@ at Condition.tests.cpp: FAILED: CHECK( x == Approx( 1.301 ) ) with expansion: - 1.3 == Approx( 1.301 ) + 1.30000000000000027 + == + Approx( 1.30099999999999993 ) at Condition.tests.cpp: @@ -827,14 +833,18 @@ at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one != Approx( 9.1f ) ) with expansion: - 9.1f != Approx( 9.1000003815 ) + 9.100000381f + != + Approx( 9.10000038146972656 ) at Condition.tests.cpp: FAILED: CHECK( data.double_pi != Approx( 3.1415926535 ) ) with expansion: - 3.1415926535 != Approx( 3.1415926535 ) + 3.14159265350000005 + != + Approx( 3.14159265350000005 ) at Condition.tests.cpp: @@ -1010,21 +1020,21 @@ at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one < 9 ) with expansion: - 9.1f < 9 + 9.100000381f < 9 at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one > 10 ) with expansion: - 9.1f > 10 + 9.100000381f > 10 at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one > 9.2 ) with expansion: - 9.1f > 9.2 + 9.100000381f > 9.19999999999999929 at Condition.tests.cpp: @@ -1452,7 +1462,7 @@ at Exception.tests.cpp: FAILED: -3.14 +3.14000000000000012 at Exception.tests.cpp: @@ -1921,7 +1931,6 @@ b1! - diff --git a/third_party/Catch2/tests/SelfTest/Baselines/sonarqube.sw.approved.txt b/third_party/Catch2/tests/SelfTest/Baselines/sonarqube.sw.approved.txt index 3db09ec0..537145cc 100644 --- a/third_party/Catch2/tests/SelfTest/Baselines/sonarqube.sw.approved.txt +++ b/third_party/Catch2/tests/SelfTest/Baselines/sonarqube.sw.approved.txt @@ -121,7 +121,6 @@ at AssertionHandler.tests.cpp: - @@ -622,35 +621,39 @@ at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one == Approx( 9.11f ) ) with expansion: - 9.1f == Approx( 9.1099996567 ) + 9.100000381f +== +Approx( 9.10999965667724609 ) at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one == Approx( 9.0f ) ) with expansion: - 9.1f == Approx( 9.0 ) + 9.100000381f == Approx( 9.0 ) at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one == Approx( 1 ) ) with expansion: - 9.1f == Approx( 1.0 ) + 9.100000381f == Approx( 1.0 ) at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one == Approx( 0 ) ) with expansion: - 9.1f == Approx( 0.0 ) + 9.100000381f == Approx( 0.0 ) at Condition.tests.cpp: FAILED: CHECK( data.double_pi == Approx( 3.1415 ) ) with expansion: - 3.1415926535 == Approx( 3.1415 ) + 3.14159265350000005 +== +Approx( 3.14150000000000018 ) at Condition.tests.cpp: @@ -685,7 +688,9 @@ at Condition.tests.cpp: FAILED: CHECK( x == Approx( 1.301 ) ) with expansion: - 1.3 == Approx( 1.301 ) + 1.30000000000000027 +== +Approx( 1.30099999999999993 ) at Condition.tests.cpp: @@ -702,14 +707,18 @@ at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one != Approx( 9.1f ) ) with expansion: - 9.1f != Approx( 9.1000003815 ) + 9.100000381f +!= +Approx( 9.10000038146972656 ) at Condition.tests.cpp: FAILED: CHECK( data.double_pi != Approx( 3.1415926535 ) ) with expansion: - 3.1415926535 != Approx( 3.1415926535 ) + 3.14159265350000005 +!= +Approx( 3.14159265350000005 ) at Condition.tests.cpp: @@ -813,21 +822,21 @@ at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one < 9 ) with expansion: - 9.1f < 9 + 9.100000381f < 9 at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one > 10 ) with expansion: - 9.1f > 10 + 9.100000381f > 10 at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one > 9.2 ) with expansion: - 9.1f > 9.2 + 9.100000381f > 9.19999999999999929 at Condition.tests.cpp: @@ -1009,7 +1018,7 @@ at Exception.tests.cpp: FAILED: -3.14 +3.14000000000000012 at Exception.tests.cpp: diff --git a/third_party/Catch2/tests/SelfTest/Baselines/sonarqube.sw.multi.approved.txt b/third_party/Catch2/tests/SelfTest/Baselines/sonarqube.sw.multi.approved.txt index f5305eb3..5965774d 100644 --- a/third_party/Catch2/tests/SelfTest/Baselines/sonarqube.sw.multi.approved.txt +++ b/third_party/Catch2/tests/SelfTest/Baselines/sonarqube.sw.multi.approved.txt @@ -120,7 +120,6 @@ at AssertionHandler.tests.cpp: - @@ -621,35 +620,39 @@ at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one == Approx( 9.11f ) ) with expansion: - 9.1f == Approx( 9.1099996567 ) + 9.100000381f +== +Approx( 9.10999965667724609 ) at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one == Approx( 9.0f ) ) with expansion: - 9.1f == Approx( 9.0 ) + 9.100000381f == Approx( 9.0 ) at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one == Approx( 1 ) ) with expansion: - 9.1f == Approx( 1.0 ) + 9.100000381f == Approx( 1.0 ) at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one == Approx( 0 ) ) with expansion: - 9.1f == Approx( 0.0 ) + 9.100000381f == Approx( 0.0 ) at Condition.tests.cpp: FAILED: CHECK( data.double_pi == Approx( 3.1415 ) ) with expansion: - 3.1415926535 == Approx( 3.1415 ) + 3.14159265350000005 +== +Approx( 3.14150000000000018 ) at Condition.tests.cpp: @@ -684,7 +687,9 @@ at Condition.tests.cpp: FAILED: CHECK( x == Approx( 1.301 ) ) with expansion: - 1.3 == Approx( 1.301 ) + 1.30000000000000027 +== +Approx( 1.30099999999999993 ) at Condition.tests.cpp: @@ -701,14 +706,18 @@ at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one != Approx( 9.1f ) ) with expansion: - 9.1f != Approx( 9.1000003815 ) + 9.100000381f +!= +Approx( 9.10000038146972656 ) at Condition.tests.cpp: FAILED: CHECK( data.double_pi != Approx( 3.1415926535 ) ) with expansion: - 3.1415926535 != Approx( 3.1415926535 ) + 3.14159265350000005 +!= +Approx( 3.14159265350000005 ) at Condition.tests.cpp: @@ -812,21 +821,21 @@ at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one < 9 ) with expansion: - 9.1f < 9 + 9.100000381f < 9 at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one > 10 ) with expansion: - 9.1f > 10 + 9.100000381f > 10 at Condition.tests.cpp: FAILED: CHECK( data.float_nine_point_one > 9.2 ) with expansion: - 9.1f > 9.2 + 9.100000381f > 9.19999999999999929 at Condition.tests.cpp: @@ -1008,7 +1017,7 @@ at Exception.tests.cpp: FAILED: -3.14 +3.14000000000000012 at Exception.tests.cpp: diff --git a/third_party/Catch2/tests/SelfTest/Baselines/tap.sw.approved.txt b/third_party/Catch2/tests/SelfTest/Baselines/tap.sw.approved.txt index d9d34590..383bd4b0 100644 --- a/third_party/Catch2/tests/SelfTest/Baselines/tap.sw.approved.txt +++ b/third_party/Catch2/tests/SelfTest/Baselines/tap.sw.approved.txt @@ -495,17 +495,17 @@ ok {test-number} - x.size() > 0 for: 42 > 0 # A Template product test case with array signature - std::array ok {test-number} - x.size() > 0 for: 9 > 0 # A comparison that uses literals instead of the normal constructor -ok {test-number} - d == 1.23_a for: 1.23 == Approx( 1.23 ) +ok {test-number} - d == 1.23_a for: 1.22999999999999998 == Approx( 1.22999999999999998 ) # A comparison that uses literals instead of the normal constructor -ok {test-number} - d != 1.22_a for: 1.23 != Approx( 1.22 ) +ok {test-number} - d != 1.22_a for: 1.22999999999999998 != Approx( 1.21999999999999997 ) # A comparison that uses literals instead of the normal constructor -ok {test-number} - -d == -1.23_a for: -1.23 == Approx( -1.23 ) +ok {test-number} - -d == -1.23_a for: -1.22999999999999998 == Approx( -1.22999999999999998 ) # A comparison that uses literals instead of the normal constructor -ok {test-number} - d == 1.2_a .epsilon(.1) for: 1.23 == Approx( 1.2 ) +ok {test-number} - d == 1.2_a .epsilon(.1) for: 1.22999999999999998 == Approx( 1.19999999999999996 ) # A comparison that uses literals instead of the normal constructor -ok {test-number} - d != 1.2_a .epsilon(.001) for: 1.23 != Approx( 1.2 ) +ok {test-number} - d != 1.2_a .epsilon(.001) for: 1.22999999999999998 != Approx( 1.19999999999999996 ) # A comparison that uses literals instead of the normal constructor -ok {test-number} - d == 1_a .epsilon(.3) for: 1.23 == Approx( 1.0 ) +ok {test-number} - d == 1_a .epsilon(.3) for: 1.22999999999999998 == Approx( 1.0 ) # A couple of nested sections followed by a failure ok {test-number} - with 1 message: 'that's not flying - that's failing in style' # A couple of nested sections followed by a failure @@ -523,9 +523,9 @@ ok {test-number} - 104.0 == Approx(100.0).margin(4) for: 104.0 == Approx( 100.0 # Absolute margin ok {test-number} - 104.0 != Approx(100.0).margin(3) for: 104.0 != Approx( 100.0 ) # Absolute margin -ok {test-number} - 100.3 != Approx(100.0) for: 100.3 != Approx( 100.0 ) +ok {test-number} - 100.3 != Approx(100.0) for: 100.29999999999999716 != Approx( 100.0 ) # Absolute margin -ok {test-number} - 100.3 == Approx(100.0).margin(0.5) for: 100.3 == Approx( 100.0 ) +ok {test-number} - 100.3 == Approx(100.0).margin(0.5) for: 100.29999999999999716 == Approx( 100.0 ) # An expression with side-effects should only be evaluated once ok {test-number} - i++ == 7 for: 7 == 7 # An expression with side-effects should only be evaluated once @@ -561,15 +561,15 @@ ok {test-number} - 245.0f == Approx(245.25f).margin(0.25f) for: 245.0f == Approx # Approx with exactly-representable margin ok {test-number} - 245.5f == Approx(245.25f).margin(0.25f) for: 245.5f == Approx( 245.25 ) # Approximate PI -ok {test-number} - divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) for: 3.1428571429 == Approx( 3.141 ) +ok {test-number} - divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) for: 3.14285714285714279 == Approx( 3.14100000000000001 ) # Approximate PI -ok {test-number} - divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) for: 3.1428571429 != Approx( 3.141 ) +ok {test-number} - divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) for: 3.14285714285714279 != Approx( 3.14100000000000001 ) # Approximate comparisons with different epsilons -ok {test-number} - d != Approx( 1.231 ) for: 1.23 != Approx( 1.231 ) +ok {test-number} - d != Approx( 1.231 ) for: 1.22999999999999998 != Approx( 1.23100000000000009 ) # Approximate comparisons with different epsilons -ok {test-number} - d == Approx( 1.231 ).epsilon( 0.1 ) for: 1.23 == Approx( 1.231 ) +ok {test-number} - d == Approx( 1.231 ).epsilon( 0.1 ) for: 1.22999999999999998 == Approx( 1.23100000000000009 ) # Approximate comparisons with floats -ok {test-number} - 1.23f == Approx( 1.23f ) for: 1.23f == Approx( 1.2300000191 ) +ok {test-number} - 1.23f == Approx( 1.23f ) for: 1.230000019f == Approx( 1.23000001907348633 ) # Approximate comparisons with floats ok {test-number} - 0.0f == Approx( 0.0f ) for: 0.0f == Approx( 0.0 ) # Approximate comparisons with ints @@ -583,9 +583,9 @@ ok {test-number} - 0 == Approx( dZero) for: 0 == Approx( 0.0 ) # Approximate comparisons with mixed numeric types ok {test-number} - 0 == Approx( dSmall ).margin( 0.001 ) for: 0 == Approx( 0.00001 ) # Approximate comparisons with mixed numeric types -ok {test-number} - 1.234f == Approx( dMedium ) for: 1.234f == Approx( 1.234 ) +ok {test-number} - 1.234f == Approx( dMedium ) for: 1.233999968f == Approx( 1.23399999999999999 ) # Approximate comparisons with mixed numeric types -ok {test-number} - dMedium == Approx( 1.234f ) for: 1.234 == Approx( 1.2339999676 ) +ok {test-number} - dMedium == Approx( 1.234f ) for: 1.23399999999999999 == Approx( 1.23399996757507324 ) # Arbitrary predicate matcher ok {test-number} - 1, Predicate( alwaysTrue, "always true" ) for: 1 matches predicate: "always true" # Arbitrary predicate matcher @@ -967,7 +967,7 @@ not ok {test-number} - unexpected exception with message: 'custom exception - no # Custom std-exceptions can be custom translated not ok {test-number} - unexpected exception with message: 'custom std exception' # Default scale is invisible to comparison -ok {test-number} - 101.000001 != Approx(100).epsilon(0.01) for: 101.000001 != Approx( 100.0 ) +ok {test-number} - 101.000001 != Approx(100).epsilon(0.01) for: 101.00000099999999748 != Approx( 100.0 ) # Default scale is invisible to comparison ok {test-number} - std::pow(10, -5) != Approx(std::pow(10, -7)) for: 0.00001 != Approx( 0.0000001 ) # Directly creating an EnumInfo @@ -999,7 +999,7 @@ ok {test-number} - stringify( Bikeshed::Colours::Red ) == "Red" for: "Red" == "R # Enums in namespaces can quickly have stringification enabled using REGISTER_ENUM ok {test-number} - stringify( Bikeshed::Colours::Blue ) == "Blue" for: "Blue" == "Blue" # Epsilon only applies to Approx's value -ok {test-number} - 101.01 != Approx(100).epsilon(0.01) for: 101.01 != Approx( 100.0 ) +ok {test-number} - 101.01 != Approx(100).epsilon(0.01) for: 101.01000000000000512 != Approx( 100.0 ) # Equality checks that should fail not ok {test-number} - data.int_seven == 6 for: 7 == 6 # Equality checks that should fail @@ -1007,15 +1007,15 @@ not ok {test-number} - data.int_seven == 8 for: 7 == 8 # Equality checks that should fail not ok {test-number} - data.int_seven == 0 for: 7 == 0 # Equality checks that should fail -not ok {test-number} - data.float_nine_point_one == Approx( 9.11f ) for: 9.1f == Approx( 9.1099996567 ) +not ok {test-number} - data.float_nine_point_one == Approx( 9.11f ) for: 9.100000381f == Approx( 9.10999965667724609 ) # Equality checks that should fail -not ok {test-number} - data.float_nine_point_one == Approx( 9.0f ) for: 9.1f == Approx( 9.0 ) +not ok {test-number} - data.float_nine_point_one == Approx( 9.0f ) for: 9.100000381f == Approx( 9.0 ) # Equality checks that should fail -not ok {test-number} - data.float_nine_point_one == Approx( 1 ) for: 9.1f == Approx( 1.0 ) +not ok {test-number} - data.float_nine_point_one == Approx( 1 ) for: 9.100000381f == Approx( 1.0 ) # Equality checks that should fail -not ok {test-number} - data.float_nine_point_one == Approx( 0 ) for: 9.1f == Approx( 0.0 ) +not ok {test-number} - data.float_nine_point_one == Approx( 0 ) for: 9.100000381f == Approx( 0.0 ) # Equality checks that should fail -not ok {test-number} - data.double_pi == Approx( 3.1415 ) for: 3.1415926535 == Approx( 3.1415 ) +not ok {test-number} - data.double_pi == Approx( 3.1415 ) for: 3.14159265350000005 == Approx( 3.14150000000000018 ) # Equality checks that should fail not ok {test-number} - data.str_hello == "goodbye" for: "hello" == "goodbye" # Equality checks that should fail @@ -1025,13 +1025,13 @@ not ok {test-number} - data.str_hello == "hello1" for: "hello" == "hello1" # Equality checks that should fail not ok {test-number} - data.str_hello.size() == 6 for: 5 == 6 # Equality checks that should fail -not ok {test-number} - x == Approx( 1.301 ) for: 1.3 == Approx( 1.301 ) +not ok {test-number} - x == Approx( 1.301 ) for: 1.30000000000000027 == Approx( 1.30099999999999993 ) # Equality checks that should succeed ok {test-number} - data.int_seven == 7 for: 7 == 7 # Equality checks that should succeed -ok {test-number} - data.float_nine_point_one == Approx( 9.1f ) for: 9.1f == Approx( 9.1000003815 ) +ok {test-number} - data.float_nine_point_one == Approx( 9.1f ) for: 9.100000381f == Approx( 9.10000038146972656 ) # Equality checks that should succeed -ok {test-number} - data.double_pi == Approx( 3.1415926535 ) for: 3.1415926535 == Approx( 3.1415926535 ) +ok {test-number} - data.double_pi == Approx( 3.1415926535 ) for: 3.14159265350000005 == Approx( 3.14159265350000005 ) # Equality checks that should succeed ok {test-number} - data.str_hello == "hello" for: "hello" == "hello" # Equality checks that should succeed @@ -1039,7 +1039,7 @@ ok {test-number} - "hello" == data.str_hello for: "hello" == "hello" # Equality checks that should succeed ok {test-number} - data.str_hello.size() == 5 for: 5 == 5 # Equality checks that should succeed -ok {test-number} - x == Approx( 1.3 ) for: 1.3 == Approx( 1.3 ) +ok {test-number} - x == Approx( 1.3 ) for: 1.30000000000000027 == Approx( 1.30000000000000004 ) # Equals ok {test-number} - testStringForMatching(), Equals( "this string contains 'abc' as a substring" ) for: "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" # Equals @@ -1125,9 +1125,9 @@ ok {test-number} - Factorial(10) == 3628800 for: 3628800 (0x) == 362 # Filter generator throws exception for empty generator ok {test-number} - filter( []( int ) { return false; }, value( 3 ) ), Catch::GeneratorException # Floating point matchers: double -ok {test-number} - 10., WithinRel( 11.1, 0.1 ) for: 10.0 and 11.1 are within 10% of each other +ok {test-number} - 10., WithinRel( 11.1, 0.1 ) for: 10.0 and 11.09999999999999964 are within 10% of each other # Floating point matchers: double -ok {test-number} - 10., !WithinRel( 11.2, 0.1 ) for: 10.0 not and 11.2 are within 10% of each other +ok {test-number} - 10., !WithinRel( 11.2, 0.1 ) for: 10.0 not and 11.19999999999999929 are within 10% of each other # Floating point matchers: double ok {test-number} - 1., !WithinRel( 0., 0.99 ) for: 1.0 not and 0.0 are within 99% of each other # Floating point matchers: double @@ -1139,9 +1139,9 @@ ok {test-number} - 1., WithinAbs( 1., 0 ) for: 1.0 is within 0.0 of 1.0 # Floating point matchers: double ok {test-number} - 0., WithinAbs( 1., 1 ) for: 0.0 is within 1.0 of 1.0 # Floating point matchers: double -ok {test-number} - 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.99 of 1.0 +ok {test-number} - 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.98999999999999999 of 1.0 # Floating point matchers: double -ok {test-number} - 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.99 of 1.0 +ok {test-number} - 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.98999999999999999 of 1.0 # Floating point matchers: double ok {test-number} - 11., !WithinAbs( 10., 0.5 ) for: 11.0 not is within 0.5 of 10.0 # Floating point matchers: double @@ -1149,11 +1149,11 @@ ok {test-number} - 10., !WithinAbs( 11., 0.5 ) for: 10.0 not is within 0.5 of 11 # Floating point matchers: double ok {test-number} - -10., WithinAbs( -10., 0.5 ) for: -10.0 is within 0.5 of -10.0 # Floating point matchers: double -ok {test-number} - -10., WithinAbs( -9.6, 0.5 ) for: -10.0 is within 0.5 of -9.6 +ok {test-number} - -10., WithinAbs( -9.6, 0.5 ) for: -10.0 is within 0.5 of -9.59999999999999964 # Floating point matchers: double ok {test-number} - 1., WithinULP( 1., 0 ) for: 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00]) # Floating point matchers: double -ok {test-number} - nextafter( 1., 2. ), WithinULP( 1., 1 ) for: 1.0 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00]) +ok {test-number} - nextafter( 1., 2. ), WithinULP( 1., 1 ) for: 1.00000000000000022 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00]) # Floating point matchers: double ok {test-number} - 0., WithinULP( nextafter( 0., 1. ), 1 ) for: 0.0 is within 1 ULPs of 4.9406564584124654e-324 ([0.0000000000000000e+00, 9.8813129168249309e-324]) # Floating point matchers: double @@ -1185,9 +1185,9 @@ ok {test-number} - WithinRel( 1., 1. ), std::domain_error # Floating point matchers: double ok {test-number} - 1., !IsNaN() for: 1.0 not is NaN # Floating point matchers: float -ok {test-number} - 10.f, WithinRel( 11.1f, 0.1f ) for: 10.0f and 11.1000003815 are within 10% of each other +ok {test-number} - 10.f, WithinRel( 11.1f, 0.1f ) for: 10.0f and 11.10000038146972656 are within 10% of each other # Floating point matchers: float -ok {test-number} - 10.f, !WithinRel( 11.2f, 0.1f ) for: 10.0f not and 11.1999998093 are within 10% of each other +ok {test-number} - 10.f, !WithinRel( 11.2f, 0.1f ) for: 10.0f not and 11.19999980926513672 are within 10% of each other # Floating point matchers: float ok {test-number} - 1.f, !WithinRel( 0.f, 0.99f ) for: 1.0f not and 0.0 are within 99% of each other # Floating point matchers: float @@ -1199,9 +1199,9 @@ ok {test-number} - 1.f, WithinAbs( 1.f, 0 ) for: 1.0f is within 0.0 of 1.0 # Floating point matchers: float ok {test-number} - 0.f, WithinAbs( 1.f, 1 ) for: 0.0f is within 1.0 of 1.0 # Floating point matchers: float -ok {test-number} - 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.9900000095 of 1.0 +ok {test-number} - 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.99000000953674316 of 1.0 # Floating point matchers: float -ok {test-number} - 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.9900000095 of 1.0 +ok {test-number} - 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.99000000953674316 of 1.0 # Floating point matchers: float ok {test-number} - 0.f, WithinAbs( -0.f, 0 ) for: 0.0f is within 0.0 of -0.0 # Floating point matchers: float @@ -1211,13 +1211,13 @@ ok {test-number} - 10.f, !WithinAbs( 11.f, 0.5f ) for: 10.0f not is within 0.5 o # Floating point matchers: float ok {test-number} - -10.f, WithinAbs( -10.f, 0.5f ) for: -10.0f is within 0.5 of -10.0 # Floating point matchers: float -ok {test-number} - -10.f, WithinAbs( -9.6f, 0.5f ) for: -10.0f is within 0.5 of -9.6000003815 +ok {test-number} - -10.f, WithinAbs( -9.6f, 0.5f ) for: -10.0f is within 0.5 of -9.60000038146972656 # Floating point matchers: float ok {test-number} - 1.f, WithinULP( 1.f, 0 ) for: 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) # Floating point matchers: float ok {test-number} - -1.f, WithinULP( -1.f, 0 ) for: -1.0f is within 0 ULPs of -1.00000000e+00f ([-1.00000000e+00, -1.00000000e+00]) # Floating point matchers: float -ok {test-number} - nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) for: 1.0f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) +ok {test-number} - nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) for: 1.000000119f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) # Floating point matchers: float ok {test-number} - 0.f, WithinULP( nextafter( 0.f, 1.f ), 1 ) for: 0.0f is within 1 ULPs of 1.40129846e-45f ([0.00000000e+00, 2.80259693e-45]) # Floating point matchers: float @@ -1233,7 +1233,7 @@ ok {test-number} - 1.f, WithinAbs( 1.f, 0.5 ) || WithinULP( 1.f, 1 ) for: 1.0f ( # Floating point matchers: float ok {test-number} - 1.f, WithinAbs( 2.f, 0.5 ) || WithinULP( 1.f, 0 ) for: 1.0f ( is within 0.5 of 2.0 or is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) ) # Floating point matchers: float -ok {test-number} - 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) for: 0.0001f ( is within 0.001 of 0.0 or and 0.0 are within 10% of each other ) +ok {test-number} - 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) for: 0.0001f ( is within 0.00100000004749745 of 0.0 or and 0.0 are within 10% of each other ) # Floating point matchers: float ok {test-number} - WithinAbs( 1.f, 0.f ) # Floating point matchers: float @@ -1593,83 +1593,83 @@ ok {test-number} - gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) wit # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.9 == Approx( -0.9 ) with 1 message: 'Current expected value is -0.9' +ok {test-number} - gen.get() == Approx(expected) for: -0.90000000000000002 == Approx( -0.90000000000000002 ) with 1 message: 'Current expected value is -0.9' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.9' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.8 == Approx( -0.8 ) with 1 message: 'Current expected value is -0.8' +ok {test-number} - gen.get() == Approx(expected) for: -0.80000000000000004 == Approx( -0.80000000000000004 ) with 1 message: 'Current expected value is -0.8' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.8' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.7 == Approx( -0.7 ) with 1 message: 'Current expected value is -0.7' +ok {test-number} - gen.get() == Approx(expected) for: -0.70000000000000007 == Approx( -0.70000000000000007 ) with 1 message: 'Current expected value is -0.7' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.7' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.6 == Approx( -0.6 ) with 1 message: 'Current expected value is -0.6' +ok {test-number} - gen.get() == Approx(expected) for: -0.60000000000000009 == Approx( -0.60000000000000009 ) with 1 message: 'Current expected value is -0.6' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.6' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.5 == Approx( -0.5 ) with 1 message: 'Current expected value is -0.5' +ok {test-number} - gen.get() == Approx(expected) for: -0.50000000000000011 == Approx( -0.50000000000000011 ) with 1 message: 'Current expected value is -0.5' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.5' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.4 == Approx( -0.4 ) with 1 message: 'Current expected value is -0.4' +ok {test-number} - gen.get() == Approx(expected) for: -0.40000000000000013 == Approx( -0.40000000000000013 ) with 1 message: 'Current expected value is -0.4' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.4' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.3 == Approx( -0.3 ) with 1 message: 'Current expected value is -0.3' +ok {test-number} - gen.get() == Approx(expected) for: -0.30000000000000016 == Approx( -0.30000000000000016 ) with 1 message: 'Current expected value is -0.3' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.3' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.2 == Approx( -0.2 ) with 1 message: 'Current expected value is -0.2' +ok {test-number} - gen.get() == Approx(expected) for: -0.20000000000000015 == Approx( -0.20000000000000015 ) with 1 message: 'Current expected value is -0.2' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.2' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.1 == Approx( -0.1 ) with 1 message: 'Current expected value is -0.1' +ok {test-number} - gen.get() == Approx(expected) for: -0.10000000000000014 == Approx( -0.10000000000000014 ) with 1 message: 'Current expected value is -0.1' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.1' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.0 == Approx( -0.0 ) with 1 message: 'Current expected value is -1.38778e-16' +ok {test-number} - gen.get() == Approx(expected) for: -0.00000000000000014 == Approx( -0.00000000000000014 ) with 1 message: 'Current expected value is -1.38778e-16' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1.38778e-16' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.1 == Approx( 0.1 ) with 1 message: 'Current expected value is 0.1' +ok {test-number} - gen.get() == Approx(expected) for: 0.09999999999999987 == Approx( 0.09999999999999987 ) with 1 message: 'Current expected value is 0.1' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.1' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.2 == Approx( 0.2 ) with 1 message: 'Current expected value is 0.2' +ok {test-number} - gen.get() == Approx(expected) for: 0.19999999999999987 == Approx( 0.19999999999999987 ) with 1 message: 'Current expected value is 0.2' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.2' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.3 == Approx( 0.3 ) with 1 message: 'Current expected value is 0.3' +ok {test-number} - gen.get() == Approx(expected) for: 0.29999999999999988 == Approx( 0.29999999999999988 ) with 1 message: 'Current expected value is 0.3' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.3' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.4 == Approx( 0.4 ) with 1 message: 'Current expected value is 0.4' +ok {test-number} - gen.get() == Approx(expected) for: 0.39999999999999991 == Approx( 0.39999999999999991 ) with 1 message: 'Current expected value is 0.4' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.4' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.5 == Approx( 0.5 ) with 1 message: 'Current expected value is 0.5' +ok {test-number} - gen.get() == Approx(expected) for: 0.49999999999999989 == Approx( 0.49999999999999989 ) with 1 message: 'Current expected value is 0.5' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.5' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.6 == Approx( 0.6 ) with 1 message: 'Current expected value is 0.6' +ok {test-number} - gen.get() == Approx(expected) for: 0.59999999999999987 == Approx( 0.59999999999999987 ) with 1 message: 'Current expected value is 0.6' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.6' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.7 == Approx( 0.7 ) with 1 message: 'Current expected value is 0.7' +ok {test-number} - gen.get() == Approx(expected) for: 0.69999999999999984 == Approx( 0.69999999999999984 ) with 1 message: 'Current expected value is 0.7' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.7' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.8 == Approx( 0.8 ) with 1 message: 'Current expected value is 0.8' +ok {test-number} - gen.get() == Approx(expected) for: 0.79999999999999982 == Approx( 0.79999999999999982 ) with 1 message: 'Current expected value is 0.8' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.8' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.9 == Approx( 0.9 ) with 1 message: 'Current expected value is 0.9' +ok {test-number} - gen.get() == Approx(expected) for: 0.8999999999999998 == Approx( 0.8999999999999998 ) with 1 message: 'Current expected value is 0.9' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.9' # Generators internals -ok {test-number} - gen.get() == Approx( rangeEnd ) for: 1.0 == Approx( 1.0 ) +ok {test-number} - gen.get() == Approx( rangeEnd ) for: 0.99999999999999978 == Approx( 1.0 ) # Generators internals ok {test-number} - !(gen.next()) for: !false # Generators internals @@ -1677,19 +1677,19 @@ ok {test-number} - gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) wit # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.7 == Approx( -0.7 ) with 1 message: 'Current expected value is -0.7' +ok {test-number} - gen.get() == Approx(expected) for: -0.69999999999999996 == Approx( -0.69999999999999996 ) with 1 message: 'Current expected value is -0.7' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.7' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.4 == Approx( -0.4 ) with 1 message: 'Current expected value is -0.4' +ok {test-number} - gen.get() == Approx(expected) for: -0.39999999999999997 == Approx( -0.39999999999999997 ) with 1 message: 'Current expected value is -0.4' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.4' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.1 == Approx( -0.1 ) with 1 message: 'Current expected value is -0.1' +ok {test-number} - gen.get() == Approx(expected) for: -0.09999999999999998 == Approx( -0.09999999999999998 ) with 1 message: 'Current expected value is -0.1' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.1' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.2 == Approx( 0.2 ) with 1 message: 'Current expected value is 0.2' +ok {test-number} - gen.get() == Approx(expected) for: 0.20000000000000001 == Approx( 0.20000000000000001 ) with 1 message: 'Current expected value is 0.2' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.2' # Generators internals @@ -1703,19 +1703,19 @@ ok {test-number} - gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) wit # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.7 == Approx( -0.7 ) with 1 message: 'Current expected value is -0.7' +ok {test-number} - gen.get() == Approx(expected) for: -0.69999999999999996 == Approx( -0.69999999999999996 ) with 1 message: 'Current expected value is -0.7' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.7' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.4 == Approx( -0.4 ) with 1 message: 'Current expected value is -0.4' +ok {test-number} - gen.get() == Approx(expected) for: -0.39999999999999997 == Approx( -0.39999999999999997 ) with 1 message: 'Current expected value is -0.4' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.4' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.1 == Approx( -0.1 ) with 1 message: 'Current expected value is -0.1' +ok {test-number} - gen.get() == Approx(expected) for: -0.09999999999999998 == Approx( -0.09999999999999998 ) with 1 message: 'Current expected value is -0.1' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.1' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.2 == Approx( 0.2 ) with 1 message: 'Current expected value is 0.2' +ok {test-number} - gen.get() == Approx(expected) for: 0.20000000000000001 == Approx( 0.20000000000000001 ) with 1 message: 'Current expected value is 0.2' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.2' # Generators internals @@ -1777,13 +1777,13 @@ ok {test-number} - gen.get() == -7 for: -7 == -7 # Generators internals ok {test-number} - !(gen.next()) for: !false # Greater-than inequalities with different epsilons -ok {test-number} - d >= Approx( 1.22 ) for: 1.23 >= Approx( 1.22 ) +ok {test-number} - d >= Approx( 1.22 ) for: 1.22999999999999998 >= Approx( 1.21999999999999997 ) # Greater-than inequalities with different epsilons -ok {test-number} - d >= Approx( 1.23 ) for: 1.23 >= Approx( 1.23 ) +ok {test-number} - d >= Approx( 1.23 ) for: 1.22999999999999998 >= Approx( 1.22999999999999998 ) # Greater-than inequalities with different epsilons -ok {test-number} - !(d >= Approx( 1.24 )) for: !(1.23 >= Approx( 1.24 )) +ok {test-number} - !(d >= Approx( 1.24 )) for: !(1.22999999999999998 >= Approx( 1.23999999999999999 )) # Greater-than inequalities with different epsilons -ok {test-number} - d >= Approx( 1.24 ).epsilon(0.1) for: 1.23 >= Approx( 1.24 ) +ok {test-number} - d >= Approx( 1.24 ).epsilon(0.1) for: 1.22999999999999998 >= Approx( 1.23999999999999999 ) # Hashers with different seed produce different hash with same test case ok {test-number} - h1( dummy ) != h2( dummy ) for: 3422778688 (0x) != 130711275 (0x) # Hashers with same seed produce same hash @@ -1837,9 +1837,9 @@ not ok {test-number} - unexpected exception with message: 'Exception translation # Inequality checks that should fail not ok {test-number} - data.int_seven != 7 for: 7 != 7 # Inequality checks that should fail -not ok {test-number} - data.float_nine_point_one != Approx( 9.1f ) for: 9.1f != Approx( 9.1000003815 ) +not ok {test-number} - data.float_nine_point_one != Approx( 9.1f ) for: 9.100000381f != Approx( 9.10000038146972656 ) # Inequality checks that should fail -not ok {test-number} - data.double_pi != Approx( 3.1415926535 ) for: 3.1415926535 != Approx( 3.1415926535 ) +not ok {test-number} - data.double_pi != Approx( 3.1415926535 ) for: 3.14159265350000005 != Approx( 3.14159265350000005 ) # Inequality checks that should fail not ok {test-number} - data.str_hello != "hello" for: "hello" != "hello" # Inequality checks that should fail @@ -1849,15 +1849,15 @@ ok {test-number} - data.int_seven != 6 for: 7 != 6 # Inequality checks that should succeed ok {test-number} - data.int_seven != 8 for: 7 != 8 # Inequality checks that should succeed -ok {test-number} - data.float_nine_point_one != Approx( 9.11f ) for: 9.1f != Approx( 9.1099996567 ) +ok {test-number} - data.float_nine_point_one != Approx( 9.11f ) for: 9.100000381f != Approx( 9.10999965667724609 ) # Inequality checks that should succeed -ok {test-number} - data.float_nine_point_one != Approx( 9.0f ) for: 9.1f != Approx( 9.0 ) +ok {test-number} - data.float_nine_point_one != Approx( 9.0f ) for: 9.100000381f != Approx( 9.0 ) # Inequality checks that should succeed -ok {test-number} - data.float_nine_point_one != Approx( 1 ) for: 9.1f != Approx( 1.0 ) +ok {test-number} - data.float_nine_point_one != Approx( 1 ) for: 9.100000381f != Approx( 1.0 ) # Inequality checks that should succeed -ok {test-number} - data.float_nine_point_one != Approx( 0 ) for: 9.1f != Approx( 0.0 ) +ok {test-number} - data.float_nine_point_one != Approx( 0 ) for: 9.100000381f != Approx( 0.0 ) # Inequality checks that should succeed -ok {test-number} - data.double_pi != Approx( 3.1415 ) for: 3.1415926535 != Approx( 3.1415 ) +ok {test-number} - data.double_pi != Approx( 3.1415 ) for: 3.14159265350000005 != Approx( 3.14150000000000018 ) # Inequality checks that should succeed ok {test-number} - data.str_hello != "goodbye" for: "hello" != "goodbye" # Inequality checks that should succeed @@ -1905,13 +1905,13 @@ ok {test-number} - sstream.str() == "\"\\\\/\\t\\r\\n\"" for: ""\\/\t\r\n"" == " # Lambdas in assertions ok {test-number} - []() { return true; }() for: true # Less-than inequalities with different epsilons -ok {test-number} - d <= Approx( 1.24 ) for: 1.23 <= Approx( 1.24 ) +ok {test-number} - d <= Approx( 1.24 ) for: 1.22999999999999998 <= Approx( 1.23999999999999999 ) # Less-than inequalities with different epsilons -ok {test-number} - d <= Approx( 1.23 ) for: 1.23 <= Approx( 1.23 ) +ok {test-number} - d <= Approx( 1.23 ) for: 1.22999999999999998 <= Approx( 1.22999999999999998 ) # Less-than inequalities with different epsilons -ok {test-number} - !(d <= Approx( 1.22 )) for: !(1.23 <= Approx( 1.22 )) +ok {test-number} - !(d <= Approx( 1.22 )) for: !(1.22999999999999998 <= Approx( 1.21999999999999997 )) # Less-than inequalities with different epsilons -ok {test-number} - d <= Approx( 1.22 ).epsilon(0.1) for: 1.23 <= Approx( 1.22 ) +ok {test-number} - d <= Approx( 1.22 ).epsilon(0.1) for: 1.22999999999999998 <= Approx( 1.21999999999999997 ) # ManuallyRegistered ok {test-number} - with 1 message: 'was called' # Matchers can be (AllOf) composed with the && operator @@ -2041,11 +2041,11 @@ not ok {test-number} - data.int_seven >= 8 for: 7 >= 8 # Ordering comparison checks that should fail not ok {test-number} - data.int_seven <= 6 for: 7 <= 6 # Ordering comparison checks that should fail -not ok {test-number} - data.float_nine_point_one < 9 for: 9.1f < 9 +not ok {test-number} - data.float_nine_point_one < 9 for: 9.100000381f < 9 # Ordering comparison checks that should fail -not ok {test-number} - data.float_nine_point_one > 10 for: 9.1f > 10 +not ok {test-number} - data.float_nine_point_one > 10 for: 9.100000381f > 10 # Ordering comparison checks that should fail -not ok {test-number} - data.float_nine_point_one > 9.2 for: 9.1f > 9.2 +not ok {test-number} - data.float_nine_point_one > 9.2 for: 9.100000381f > 9.19999999999999929 # Ordering comparison checks that should fail not ok {test-number} - data.str_hello > "hello" for: "hello" > "hello" # Ordering comparison checks that should fail @@ -2079,11 +2079,11 @@ ok {test-number} - data.int_seven <= 7 for: 7 <= 7 # Ordering comparison checks that should succeed ok {test-number} - data.int_seven <= 8 for: 7 <= 8 # Ordering comparison checks that should succeed -ok {test-number} - data.float_nine_point_one > 9 for: 9.1f > 9 +ok {test-number} - data.float_nine_point_one > 9 for: 9.100000381f > 9 # Ordering comparison checks that should succeed -ok {test-number} - data.float_nine_point_one < 10 for: 9.1f < 10 +ok {test-number} - data.float_nine_point_one < 10 for: 9.100000381f < 10 # Ordering comparison checks that should succeed -ok {test-number} - data.float_nine_point_one < 9.2 for: 9.1f < 9.2 +ok {test-number} - data.float_nine_point_one < 9.2 for: 9.100000381f < 9.19999999999999929 # Ordering comparison checks that should succeed ok {test-number} - data.str_hello <= "hello" for: "hello" <= "hello" # Ordering comparison checks that should succeed @@ -2419,7 +2419,7 @@ ok {test-number} - config.benchmarkResamples == 20000 for: 20000 (0x # Process can be configured on command line ok {test-number} - cli.parse({ "test", "--benchmark-confidence-interval=0.99" }) for: {?} # Process can be configured on command line -ok {test-number} - config.benchmarkConfidenceInterval == Catch::Approx(0.99) for: 0.99 == Approx( 0.99 ) +ok {test-number} - config.benchmarkConfidenceInterval == Catch::Approx(0.99) for: 0.98999999999999999 == Approx( 0.98999999999999999 ) # Process can be configured on command line ok {test-number} - cli.parse({ "test", "--benchmark-no-analysis" }) for: {?} # Process can be configured on command line @@ -2600,21 +2600,21 @@ A string sent directly to stdout A string sent directly to stderr A string sent to stderr via clog # Some simple comparisons between doubles -ok {test-number} - d == Approx( 1.23 ) for: 1.23 == Approx( 1.23 ) +ok {test-number} - d == Approx( 1.23 ) for: 1.22999999999999998 == Approx( 1.22999999999999998 ) # Some simple comparisons between doubles -ok {test-number} - d != Approx( 1.22 ) for: 1.23 != Approx( 1.22 ) +ok {test-number} - d != Approx( 1.22 ) for: 1.22999999999999998 != Approx( 1.21999999999999997 ) # Some simple comparisons between doubles -ok {test-number} - d != Approx( 1.24 ) for: 1.23 != Approx( 1.24 ) +ok {test-number} - d != Approx( 1.24 ) for: 1.22999999999999998 != Approx( 1.23999999999999999 ) # Some simple comparisons between doubles -ok {test-number} - d == 1.23_a for: 1.23 == Approx( 1.23 ) +ok {test-number} - d == 1.23_a for: 1.22999999999999998 == Approx( 1.22999999999999998 ) # Some simple comparisons between doubles -ok {test-number} - d != 1.22_a for: 1.23 != Approx( 1.22 ) +ok {test-number} - d != 1.22_a for: 1.22999999999999998 != Approx( 1.21999999999999997 ) # Some simple comparisons between doubles -ok {test-number} - Approx( d ) == 1.23 for: Approx( 1.23 ) == 1.23 +ok {test-number} - Approx( d ) == 1.23 for: Approx( 1.22999999999999998 ) == 1.22999999999999998 # Some simple comparisons between doubles -ok {test-number} - Approx( d ) != 1.22 for: Approx( 1.23 ) != 1.22 +ok {test-number} - Approx( d ) != 1.22 for: Approx( 1.22999999999999998 ) != 1.21999999999999997 # Some simple comparisons between doubles -ok {test-number} - Approx( d ) != 1.24 for: Approx( 1.23 ) != 1.24 +ok {test-number} - Approx( d ) != 1.24 for: Approx( 1.22999999999999998 ) != 1.23999999999999999 Message from section one Message from section two # StartsWith string matcher @@ -3326,7 +3326,7 @@ ok {test-number} - vector_a, RangeEquals( array_a_plus_1, close_enough ) for: { # Type conversions of RangeEquals and similar ok {test-number} - vector_a, UnorderedRangeEquals( array_a_plus_1, close_enough ) for: { 1, 2, 3 } unordered elements are { 2, 3, 4 } # Unexpected exceptions can be translated -not ok {test-number} - unexpected exception with message: '3.14' +not ok {test-number} - unexpected exception with message: '3.14000000000000012' # Upcasting special member functions ok {test-number} - bptr->i == 3 for: 3 == 3 # Upcasting special member functions @@ -3618,21 +3618,21 @@ ok {test-number} - unrelated::ADL_size{}, SizeIs(12) for: {?} has size == 12 # Usage of the SizeIs range matcher ok {test-number} - has_size{}, SizeIs(13) for: {?} has size == 13 # Use a custom approx -ok {test-number} - d == approx( 1.23 ) for: 1.23 == Approx( 1.23 ) +ok {test-number} - d == approx( 1.23 ) for: 1.22999999999999998 == Approx( 1.22999999999999998 ) # Use a custom approx -ok {test-number} - d == approx( 1.22 ) for: 1.23 == Approx( 1.22 ) +ok {test-number} - d == approx( 1.22 ) for: 1.22999999999999998 == Approx( 1.21999999999999997 ) # Use a custom approx -ok {test-number} - d == approx( 1.24 ) for: 1.23 == Approx( 1.24 ) +ok {test-number} - d == approx( 1.24 ) for: 1.22999999999999998 == Approx( 1.23999999999999999 ) # Use a custom approx -ok {test-number} - d != approx( 1.25 ) for: 1.23 != Approx( 1.25 ) +ok {test-number} - d != approx( 1.25 ) for: 1.22999999999999998 != Approx( 1.25 ) # Use a custom approx -ok {test-number} - approx( d ) == 1.23 for: Approx( 1.23 ) == 1.23 +ok {test-number} - approx( d ) == 1.23 for: Approx( 1.22999999999999998 ) == 1.22999999999999998 # Use a custom approx -ok {test-number} - approx( d ) == 1.22 for: Approx( 1.23 ) == 1.22 +ok {test-number} - approx( d ) == 1.22 for: Approx( 1.22999999999999998 ) == 1.21999999999999997 # Use a custom approx -ok {test-number} - approx( d ) == 1.24 for: Approx( 1.23 ) == 1.24 +ok {test-number} - approx( d ) == 1.24 for: Approx( 1.22999999999999998 ) == 1.23999999999999999 # Use a custom approx -ok {test-number} - approx( d ) != 1.25 for: Approx( 1.23 ) != 1.25 +ok {test-number} - approx( d ) != 1.25 for: Approx( 1.22999999999999998 ) != 1.25 # Variadic macros ok {test-number} - with 1 message: 'no assertions' # Vector Approx matcher @@ -3958,11 +3958,11 @@ ok {test-number} - # SKIP 'skipping because answer = 43' # empty tags are not allowed ok {test-number} - Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo) # erfc_inv -ok {test-number} - erfc_inv(1.103560) == Approx(-0.09203687623843015) for: -0.0920368762 == Approx( -0.0920368762 ) +ok {test-number} - erfc_inv(1.103560) == Approx(-0.09203687623843015) for: -0.09203687623843014 == Approx( -0.09203687623843015 ) # erfc_inv -ok {test-number} - erfc_inv(1.067400) == Approx(-0.05980291115763361) for: -0.0598029112 == Approx( -0.0598029112 ) +ok {test-number} - erfc_inv(1.067400) == Approx(-0.05980291115763361) for: -0.05980291115763361 == Approx( -0.05980291115763361 ) # erfc_inv -ok {test-number} - erfc_inv(0.050000) == Approx(1.38590382434967796) for: 1.3859038243 == Approx( 1.3859038243 ) +ok {test-number} - erfc_inv(0.050000) == Approx(1.38590382434967796) for: 1.38590382434967774 == Approx( 1.38590382434967796 ) # estimate_clock_resolution ok {test-number} - res.mean.count() == rate for: 2000.0 == 2000 (0x) # estimate_clock_resolution @@ -4107,22 +4107,12 @@ ok {test-number} - # SKIP ok {test-number} - s == "7" for: "7" == "7" # non-copyable objects ok {test-number} - ti == typeid(int) for: {?} == {?} -# normal_cdf -ok {test-number} - normal_cdf(0.000000) == Approx(0.50000000000000000) for: 0.5 == Approx( 0.5 ) -# normal_cdf -ok {test-number} - normal_cdf(1.000000) == Approx(0.84134474606854293) for: 0.8413447461 == Approx( 0.8413447461 ) -# normal_cdf -ok {test-number} - normal_cdf(-1.000000) == Approx(0.15865525393145705) for: 0.1586552539 == Approx( 0.1586552539 ) -# normal_cdf -ok {test-number} - normal_cdf(2.809729) == Approx(0.99752083845315409) for: 0.9975208385 == Approx( 0.9975208385 ) -# normal_cdf -ok {test-number} - normal_cdf(-1.352570) == Approx(0.08809652095066035) for: 0.088096521 == Approx( 0.088096521 ) # normal_quantile -ok {test-number} - normal_quantile(0.551780) == Approx(0.13015979861484198) for: 0.1301597986 == Approx( 0.1301597986 ) +ok {test-number} - normal_quantile(0.551780) == Approx(0.13015979861484198) for: 0.13015979861484195 == Approx( 0.13015979861484198 ) # normal_quantile -ok {test-number} - normal_quantile(0.533700) == Approx(0.08457408802851875) for: 0.084574088 == Approx( 0.084574088 ) +ok {test-number} - normal_quantile(0.533700) == Approx(0.08457408802851875) for: 0.08457408802851875 == Approx( 0.08457408802851875 ) # normal_quantile -ok {test-number} - normal_quantile(0.025000) == Approx(-1.95996398454005449) for: -1.9599639845 == Approx( -1.9599639845 ) +ok {test-number} - normal_quantile(0.025000) == Approx(-1.95996398454005449) for: -1.95996398454005405 == Approx( -1.95996398454005449 ) # not allowed ok {test-number} - # not prints unscoped info from previous failures @@ -4406,15 +4396,15 @@ ok {test-number} - "{ }" == ::Catch::Detail::stringify(type{}) for: "{ }" == "{ # tuple<> ok {test-number} - "{ }" == ::Catch::Detail::stringify(value) for: "{ }" == "{ }" # tuple -ok {test-number} - "1.2f" == ::Catch::Detail::stringify(float(1.2)) for: "1.2f" == "1.2f" +ok {test-number} - "1.5f" == ::Catch::Detail::stringify(float(1.5)) for: "1.5f" == "1.5f" # tuple -ok {test-number} - "{ 1.2f, 0 }" == ::Catch::Detail::stringify(type{1.2f,0}) for: "{ 1.2f, 0 }" == "{ 1.2f, 0 }" +ok {test-number} - "{ 1.5f, 0 }" == ::Catch::Detail::stringify(type{1.5f,0}) for: "{ 1.5f, 0 }" == "{ 1.5f, 0 }" # tuple ok {test-number} - "{ 0 }" == ::Catch::Detail::stringify(type{0}) for: "{ 0 }" == "{ 0 }" # tuple ok {test-number} - "{ \"hello\", \"world\" }" == ::Catch::Detail::stringify(type{"hello","world"}) for: "{ "hello", "world" }" == "{ "hello", "world" }" # tuple,tuple<>,float> -ok {test-number} - "{ { 42 }, { }, 1.2f }" == ::Catch::Detail::stringify(value) for: "{ { 42 }, { }, 1.2f }" == "{ { 42 }, { }, 1.2f }" +ok {test-number} - "{ { 42 }, { }, 1.5f }" == ::Catch::Detail::stringify(value) for: "{ { 42 }, { }, 1.5f }" == "{ { 42 }, { }, 1.5f }" # uniform samples ok {test-number} - e.point == 23 for: 23.0 == 23 # uniform samples @@ -4422,7 +4412,7 @@ ok {test-number} - e.upper_bound == 23 for: 23.0 == 23 # uniform samples ok {test-number} - e.lower_bound == 23 for: 23.0 == 23 # uniform samples -ok {test-number} - e.confidence_interval == 0.95 for: 0.95 == 0.95 +ok {test-number} - e.confidence_interval == 0.95 for: 0.94999999999999996 == 0.94999999999999996 # uniform_integer_distribution can return the bounds ok {test-number} - dist.a() == -10 for: -10 == -10 # uniform_integer_distribution can return the bounds @@ -4549,5 +4539,5 @@ ok {test-number} - q3 == 23. for: 23.0 == 23.0 ok {test-number} - # xmlentitycheck ok {test-number} - -1..2272 +1..2267 diff --git a/third_party/Catch2/tests/SelfTest/Baselines/tap.sw.multi.approved.txt b/third_party/Catch2/tests/SelfTest/Baselines/tap.sw.multi.approved.txt index a439fdef..6622a96a 100644 --- a/third_party/Catch2/tests/SelfTest/Baselines/tap.sw.multi.approved.txt +++ b/third_party/Catch2/tests/SelfTest/Baselines/tap.sw.multi.approved.txt @@ -493,17 +493,17 @@ ok {test-number} - x.size() > 0 for: 42 > 0 # A Template product test case with array signature - std::array ok {test-number} - x.size() > 0 for: 9 > 0 # A comparison that uses literals instead of the normal constructor -ok {test-number} - d == 1.23_a for: 1.23 == Approx( 1.23 ) +ok {test-number} - d == 1.23_a for: 1.22999999999999998 == Approx( 1.22999999999999998 ) # A comparison that uses literals instead of the normal constructor -ok {test-number} - d != 1.22_a for: 1.23 != Approx( 1.22 ) +ok {test-number} - d != 1.22_a for: 1.22999999999999998 != Approx( 1.21999999999999997 ) # A comparison that uses literals instead of the normal constructor -ok {test-number} - -d == -1.23_a for: -1.23 == Approx( -1.23 ) +ok {test-number} - -d == -1.23_a for: -1.22999999999999998 == Approx( -1.22999999999999998 ) # A comparison that uses literals instead of the normal constructor -ok {test-number} - d == 1.2_a .epsilon(.1) for: 1.23 == Approx( 1.2 ) +ok {test-number} - d == 1.2_a .epsilon(.1) for: 1.22999999999999998 == Approx( 1.19999999999999996 ) # A comparison that uses literals instead of the normal constructor -ok {test-number} - d != 1.2_a .epsilon(.001) for: 1.23 != Approx( 1.2 ) +ok {test-number} - d != 1.2_a .epsilon(.001) for: 1.22999999999999998 != Approx( 1.19999999999999996 ) # A comparison that uses literals instead of the normal constructor -ok {test-number} - d == 1_a .epsilon(.3) for: 1.23 == Approx( 1.0 ) +ok {test-number} - d == 1_a .epsilon(.3) for: 1.22999999999999998 == Approx( 1.0 ) # A couple of nested sections followed by a failure ok {test-number} - with 1 message: 'that's not flying - that's failing in style' # A couple of nested sections followed by a failure @@ -521,9 +521,9 @@ ok {test-number} - 104.0 == Approx(100.0).margin(4) for: 104.0 == Approx( 100.0 # Absolute margin ok {test-number} - 104.0 != Approx(100.0).margin(3) for: 104.0 != Approx( 100.0 ) # Absolute margin -ok {test-number} - 100.3 != Approx(100.0) for: 100.3 != Approx( 100.0 ) +ok {test-number} - 100.3 != Approx(100.0) for: 100.29999999999999716 != Approx( 100.0 ) # Absolute margin -ok {test-number} - 100.3 == Approx(100.0).margin(0.5) for: 100.3 == Approx( 100.0 ) +ok {test-number} - 100.3 == Approx(100.0).margin(0.5) for: 100.29999999999999716 == Approx( 100.0 ) # An expression with side-effects should only be evaluated once ok {test-number} - i++ == 7 for: 7 == 7 # An expression with side-effects should only be evaluated once @@ -559,15 +559,15 @@ ok {test-number} - 245.0f == Approx(245.25f).margin(0.25f) for: 245.0f == Approx # Approx with exactly-representable margin ok {test-number} - 245.5f == Approx(245.25f).margin(0.25f) for: 245.5f == Approx( 245.25 ) # Approximate PI -ok {test-number} - divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) for: 3.1428571429 == Approx( 3.141 ) +ok {test-number} - divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) for: 3.14285714285714279 == Approx( 3.14100000000000001 ) # Approximate PI -ok {test-number} - divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) for: 3.1428571429 != Approx( 3.141 ) +ok {test-number} - divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) for: 3.14285714285714279 != Approx( 3.14100000000000001 ) # Approximate comparisons with different epsilons -ok {test-number} - d != Approx( 1.231 ) for: 1.23 != Approx( 1.231 ) +ok {test-number} - d != Approx( 1.231 ) for: 1.22999999999999998 != Approx( 1.23100000000000009 ) # Approximate comparisons with different epsilons -ok {test-number} - d == Approx( 1.231 ).epsilon( 0.1 ) for: 1.23 == Approx( 1.231 ) +ok {test-number} - d == Approx( 1.231 ).epsilon( 0.1 ) for: 1.22999999999999998 == Approx( 1.23100000000000009 ) # Approximate comparisons with floats -ok {test-number} - 1.23f == Approx( 1.23f ) for: 1.23f == Approx( 1.2300000191 ) +ok {test-number} - 1.23f == Approx( 1.23f ) for: 1.230000019f == Approx( 1.23000001907348633 ) # Approximate comparisons with floats ok {test-number} - 0.0f == Approx( 0.0f ) for: 0.0f == Approx( 0.0 ) # Approximate comparisons with ints @@ -581,9 +581,9 @@ ok {test-number} - 0 == Approx( dZero) for: 0 == Approx( 0.0 ) # Approximate comparisons with mixed numeric types ok {test-number} - 0 == Approx( dSmall ).margin( 0.001 ) for: 0 == Approx( 0.00001 ) # Approximate comparisons with mixed numeric types -ok {test-number} - 1.234f == Approx( dMedium ) for: 1.234f == Approx( 1.234 ) +ok {test-number} - 1.234f == Approx( dMedium ) for: 1.233999968f == Approx( 1.23399999999999999 ) # Approximate comparisons with mixed numeric types -ok {test-number} - dMedium == Approx( 1.234f ) for: 1.234 == Approx( 1.2339999676 ) +ok {test-number} - dMedium == Approx( 1.234f ) for: 1.23399999999999999 == Approx( 1.23399996757507324 ) # Arbitrary predicate matcher ok {test-number} - 1, Predicate( alwaysTrue, "always true" ) for: 1 matches predicate: "always true" # Arbitrary predicate matcher @@ -965,7 +965,7 @@ not ok {test-number} - unexpected exception with message: 'custom exception - no # Custom std-exceptions can be custom translated not ok {test-number} - unexpected exception with message: 'custom std exception' # Default scale is invisible to comparison -ok {test-number} - 101.000001 != Approx(100).epsilon(0.01) for: 101.000001 != Approx( 100.0 ) +ok {test-number} - 101.000001 != Approx(100).epsilon(0.01) for: 101.00000099999999748 != Approx( 100.0 ) # Default scale is invisible to comparison ok {test-number} - std::pow(10, -5) != Approx(std::pow(10, -7)) for: 0.00001 != Approx( 0.0000001 ) # Directly creating an EnumInfo @@ -997,7 +997,7 @@ ok {test-number} - stringify( Bikeshed::Colours::Red ) == "Red" for: "Red" == "R # Enums in namespaces can quickly have stringification enabled using REGISTER_ENUM ok {test-number} - stringify( Bikeshed::Colours::Blue ) == "Blue" for: "Blue" == "Blue" # Epsilon only applies to Approx's value -ok {test-number} - 101.01 != Approx(100).epsilon(0.01) for: 101.01 != Approx( 100.0 ) +ok {test-number} - 101.01 != Approx(100).epsilon(0.01) for: 101.01000000000000512 != Approx( 100.0 ) # Equality checks that should fail not ok {test-number} - data.int_seven == 6 for: 7 == 6 # Equality checks that should fail @@ -1005,15 +1005,15 @@ not ok {test-number} - data.int_seven == 8 for: 7 == 8 # Equality checks that should fail not ok {test-number} - data.int_seven == 0 for: 7 == 0 # Equality checks that should fail -not ok {test-number} - data.float_nine_point_one == Approx( 9.11f ) for: 9.1f == Approx( 9.1099996567 ) +not ok {test-number} - data.float_nine_point_one == Approx( 9.11f ) for: 9.100000381f == Approx( 9.10999965667724609 ) # Equality checks that should fail -not ok {test-number} - data.float_nine_point_one == Approx( 9.0f ) for: 9.1f == Approx( 9.0 ) +not ok {test-number} - data.float_nine_point_one == Approx( 9.0f ) for: 9.100000381f == Approx( 9.0 ) # Equality checks that should fail -not ok {test-number} - data.float_nine_point_one == Approx( 1 ) for: 9.1f == Approx( 1.0 ) +not ok {test-number} - data.float_nine_point_one == Approx( 1 ) for: 9.100000381f == Approx( 1.0 ) # Equality checks that should fail -not ok {test-number} - data.float_nine_point_one == Approx( 0 ) for: 9.1f == Approx( 0.0 ) +not ok {test-number} - data.float_nine_point_one == Approx( 0 ) for: 9.100000381f == Approx( 0.0 ) # Equality checks that should fail -not ok {test-number} - data.double_pi == Approx( 3.1415 ) for: 3.1415926535 == Approx( 3.1415 ) +not ok {test-number} - data.double_pi == Approx( 3.1415 ) for: 3.14159265350000005 == Approx( 3.14150000000000018 ) # Equality checks that should fail not ok {test-number} - data.str_hello == "goodbye" for: "hello" == "goodbye" # Equality checks that should fail @@ -1023,13 +1023,13 @@ not ok {test-number} - data.str_hello == "hello1" for: "hello" == "hello1" # Equality checks that should fail not ok {test-number} - data.str_hello.size() == 6 for: 5 == 6 # Equality checks that should fail -not ok {test-number} - x == Approx( 1.301 ) for: 1.3 == Approx( 1.301 ) +not ok {test-number} - x == Approx( 1.301 ) for: 1.30000000000000027 == Approx( 1.30099999999999993 ) # Equality checks that should succeed ok {test-number} - data.int_seven == 7 for: 7 == 7 # Equality checks that should succeed -ok {test-number} - data.float_nine_point_one == Approx( 9.1f ) for: 9.1f == Approx( 9.1000003815 ) +ok {test-number} - data.float_nine_point_one == Approx( 9.1f ) for: 9.100000381f == Approx( 9.10000038146972656 ) # Equality checks that should succeed -ok {test-number} - data.double_pi == Approx( 3.1415926535 ) for: 3.1415926535 == Approx( 3.1415926535 ) +ok {test-number} - data.double_pi == Approx( 3.1415926535 ) for: 3.14159265350000005 == Approx( 3.14159265350000005 ) # Equality checks that should succeed ok {test-number} - data.str_hello == "hello" for: "hello" == "hello" # Equality checks that should succeed @@ -1037,7 +1037,7 @@ ok {test-number} - "hello" == data.str_hello for: "hello" == "hello" # Equality checks that should succeed ok {test-number} - data.str_hello.size() == 5 for: 5 == 5 # Equality checks that should succeed -ok {test-number} - x == Approx( 1.3 ) for: 1.3 == Approx( 1.3 ) +ok {test-number} - x == Approx( 1.3 ) for: 1.30000000000000027 == Approx( 1.30000000000000004 ) # Equals ok {test-number} - testStringForMatching(), Equals( "this string contains 'abc' as a substring" ) for: "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" # Equals @@ -1123,9 +1123,9 @@ ok {test-number} - Factorial(10) == 3628800 for: 3628800 (0x) == 362 # Filter generator throws exception for empty generator ok {test-number} - filter( []( int ) { return false; }, value( 3 ) ), Catch::GeneratorException # Floating point matchers: double -ok {test-number} - 10., WithinRel( 11.1, 0.1 ) for: 10.0 and 11.1 are within 10% of each other +ok {test-number} - 10., WithinRel( 11.1, 0.1 ) for: 10.0 and 11.09999999999999964 are within 10% of each other # Floating point matchers: double -ok {test-number} - 10., !WithinRel( 11.2, 0.1 ) for: 10.0 not and 11.2 are within 10% of each other +ok {test-number} - 10., !WithinRel( 11.2, 0.1 ) for: 10.0 not and 11.19999999999999929 are within 10% of each other # Floating point matchers: double ok {test-number} - 1., !WithinRel( 0., 0.99 ) for: 1.0 not and 0.0 are within 99% of each other # Floating point matchers: double @@ -1137,9 +1137,9 @@ ok {test-number} - 1., WithinAbs( 1., 0 ) for: 1.0 is within 0.0 of 1.0 # Floating point matchers: double ok {test-number} - 0., WithinAbs( 1., 1 ) for: 0.0 is within 1.0 of 1.0 # Floating point matchers: double -ok {test-number} - 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.99 of 1.0 +ok {test-number} - 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.98999999999999999 of 1.0 # Floating point matchers: double -ok {test-number} - 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.99 of 1.0 +ok {test-number} - 0., !WithinAbs( 1., 0.99 ) for: 0.0 not is within 0.98999999999999999 of 1.0 # Floating point matchers: double ok {test-number} - 11., !WithinAbs( 10., 0.5 ) for: 11.0 not is within 0.5 of 10.0 # Floating point matchers: double @@ -1147,11 +1147,11 @@ ok {test-number} - 10., !WithinAbs( 11., 0.5 ) for: 10.0 not is within 0.5 of 11 # Floating point matchers: double ok {test-number} - -10., WithinAbs( -10., 0.5 ) for: -10.0 is within 0.5 of -10.0 # Floating point matchers: double -ok {test-number} - -10., WithinAbs( -9.6, 0.5 ) for: -10.0 is within 0.5 of -9.6 +ok {test-number} - -10., WithinAbs( -9.6, 0.5 ) for: -10.0 is within 0.5 of -9.59999999999999964 # Floating point matchers: double ok {test-number} - 1., WithinULP( 1., 0 ) for: 1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.0000000000000000e+00]) # Floating point matchers: double -ok {test-number} - nextafter( 1., 2. ), WithinULP( 1., 1 ) for: 1.0 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00]) +ok {test-number} - nextafter( 1., 2. ), WithinULP( 1., 1 ) for: 1.00000000000000022 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00]) # Floating point matchers: double ok {test-number} - 0., WithinULP( nextafter( 0., 1. ), 1 ) for: 0.0 is within 1 ULPs of 4.9406564584124654e-324 ([0.0000000000000000e+00, 9.8813129168249309e-324]) # Floating point matchers: double @@ -1183,9 +1183,9 @@ ok {test-number} - WithinRel( 1., 1. ), std::domain_error # Floating point matchers: double ok {test-number} - 1., !IsNaN() for: 1.0 not is NaN # Floating point matchers: float -ok {test-number} - 10.f, WithinRel( 11.1f, 0.1f ) for: 10.0f and 11.1000003815 are within 10% of each other +ok {test-number} - 10.f, WithinRel( 11.1f, 0.1f ) for: 10.0f and 11.10000038146972656 are within 10% of each other # Floating point matchers: float -ok {test-number} - 10.f, !WithinRel( 11.2f, 0.1f ) for: 10.0f not and 11.1999998093 are within 10% of each other +ok {test-number} - 10.f, !WithinRel( 11.2f, 0.1f ) for: 10.0f not and 11.19999980926513672 are within 10% of each other # Floating point matchers: float ok {test-number} - 1.f, !WithinRel( 0.f, 0.99f ) for: 1.0f not and 0.0 are within 99% of each other # Floating point matchers: float @@ -1197,9 +1197,9 @@ ok {test-number} - 1.f, WithinAbs( 1.f, 0 ) for: 1.0f is within 0.0 of 1.0 # Floating point matchers: float ok {test-number} - 0.f, WithinAbs( 1.f, 1 ) for: 0.0f is within 1.0 of 1.0 # Floating point matchers: float -ok {test-number} - 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.9900000095 of 1.0 +ok {test-number} - 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.99000000953674316 of 1.0 # Floating point matchers: float -ok {test-number} - 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.9900000095 of 1.0 +ok {test-number} - 0.f, !WithinAbs( 1.f, 0.99f ) for: 0.0f not is within 0.99000000953674316 of 1.0 # Floating point matchers: float ok {test-number} - 0.f, WithinAbs( -0.f, 0 ) for: 0.0f is within 0.0 of -0.0 # Floating point matchers: float @@ -1209,13 +1209,13 @@ ok {test-number} - 10.f, !WithinAbs( 11.f, 0.5f ) for: 10.0f not is within 0.5 o # Floating point matchers: float ok {test-number} - -10.f, WithinAbs( -10.f, 0.5f ) for: -10.0f is within 0.5 of -10.0 # Floating point matchers: float -ok {test-number} - -10.f, WithinAbs( -9.6f, 0.5f ) for: -10.0f is within 0.5 of -9.6000003815 +ok {test-number} - -10.f, WithinAbs( -9.6f, 0.5f ) for: -10.0f is within 0.5 of -9.60000038146972656 # Floating point matchers: float ok {test-number} - 1.f, WithinULP( 1.f, 0 ) for: 1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) # Floating point matchers: float ok {test-number} - -1.f, WithinULP( -1.f, 0 ) for: -1.0f is within 0 ULPs of -1.00000000e+00f ([-1.00000000e+00, -1.00000000e+00]) # Floating point matchers: float -ok {test-number} - nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) for: 1.0f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) +ok {test-number} - nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) for: 1.000000119f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) # Floating point matchers: float ok {test-number} - 0.f, WithinULP( nextafter( 0.f, 1.f ), 1 ) for: 0.0f is within 1 ULPs of 1.40129846e-45f ([0.00000000e+00, 2.80259693e-45]) # Floating point matchers: float @@ -1231,7 +1231,7 @@ ok {test-number} - 1.f, WithinAbs( 1.f, 0.5 ) || WithinULP( 1.f, 1 ) for: 1.0f ( # Floating point matchers: float ok {test-number} - 1.f, WithinAbs( 2.f, 0.5 ) || WithinULP( 1.f, 0 ) for: 1.0f ( is within 0.5 of 2.0 or is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00]) ) # Floating point matchers: float -ok {test-number} - 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) for: 0.0001f ( is within 0.001 of 0.0 or and 0.0 are within 10% of each other ) +ok {test-number} - 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) for: 0.0001f ( is within 0.00100000004749745 of 0.0 or and 0.0 are within 10% of each other ) # Floating point matchers: float ok {test-number} - WithinAbs( 1.f, 0.f ) # Floating point matchers: float @@ -1591,83 +1591,83 @@ ok {test-number} - gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) wit # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.9 == Approx( -0.9 ) with 1 message: 'Current expected value is -0.9' +ok {test-number} - gen.get() == Approx(expected) for: -0.90000000000000002 == Approx( -0.90000000000000002 ) with 1 message: 'Current expected value is -0.9' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.9' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.8 == Approx( -0.8 ) with 1 message: 'Current expected value is -0.8' +ok {test-number} - gen.get() == Approx(expected) for: -0.80000000000000004 == Approx( -0.80000000000000004 ) with 1 message: 'Current expected value is -0.8' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.8' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.7 == Approx( -0.7 ) with 1 message: 'Current expected value is -0.7' +ok {test-number} - gen.get() == Approx(expected) for: -0.70000000000000007 == Approx( -0.70000000000000007 ) with 1 message: 'Current expected value is -0.7' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.7' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.6 == Approx( -0.6 ) with 1 message: 'Current expected value is -0.6' +ok {test-number} - gen.get() == Approx(expected) for: -0.60000000000000009 == Approx( -0.60000000000000009 ) with 1 message: 'Current expected value is -0.6' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.6' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.5 == Approx( -0.5 ) with 1 message: 'Current expected value is -0.5' +ok {test-number} - gen.get() == Approx(expected) for: -0.50000000000000011 == Approx( -0.50000000000000011 ) with 1 message: 'Current expected value is -0.5' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.5' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.4 == Approx( -0.4 ) with 1 message: 'Current expected value is -0.4' +ok {test-number} - gen.get() == Approx(expected) for: -0.40000000000000013 == Approx( -0.40000000000000013 ) with 1 message: 'Current expected value is -0.4' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.4' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.3 == Approx( -0.3 ) with 1 message: 'Current expected value is -0.3' +ok {test-number} - gen.get() == Approx(expected) for: -0.30000000000000016 == Approx( -0.30000000000000016 ) with 1 message: 'Current expected value is -0.3' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.3' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.2 == Approx( -0.2 ) with 1 message: 'Current expected value is -0.2' +ok {test-number} - gen.get() == Approx(expected) for: -0.20000000000000015 == Approx( -0.20000000000000015 ) with 1 message: 'Current expected value is -0.2' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.2' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.1 == Approx( -0.1 ) with 1 message: 'Current expected value is -0.1' +ok {test-number} - gen.get() == Approx(expected) for: -0.10000000000000014 == Approx( -0.10000000000000014 ) with 1 message: 'Current expected value is -0.1' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.1' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.0 == Approx( -0.0 ) with 1 message: 'Current expected value is -1.38778e-16' +ok {test-number} - gen.get() == Approx(expected) for: -0.00000000000000014 == Approx( -0.00000000000000014 ) with 1 message: 'Current expected value is -1.38778e-16' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1.38778e-16' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.1 == Approx( 0.1 ) with 1 message: 'Current expected value is 0.1' +ok {test-number} - gen.get() == Approx(expected) for: 0.09999999999999987 == Approx( 0.09999999999999987 ) with 1 message: 'Current expected value is 0.1' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.1' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.2 == Approx( 0.2 ) with 1 message: 'Current expected value is 0.2' +ok {test-number} - gen.get() == Approx(expected) for: 0.19999999999999987 == Approx( 0.19999999999999987 ) with 1 message: 'Current expected value is 0.2' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.2' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.3 == Approx( 0.3 ) with 1 message: 'Current expected value is 0.3' +ok {test-number} - gen.get() == Approx(expected) for: 0.29999999999999988 == Approx( 0.29999999999999988 ) with 1 message: 'Current expected value is 0.3' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.3' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.4 == Approx( 0.4 ) with 1 message: 'Current expected value is 0.4' +ok {test-number} - gen.get() == Approx(expected) for: 0.39999999999999991 == Approx( 0.39999999999999991 ) with 1 message: 'Current expected value is 0.4' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.4' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.5 == Approx( 0.5 ) with 1 message: 'Current expected value is 0.5' +ok {test-number} - gen.get() == Approx(expected) for: 0.49999999999999989 == Approx( 0.49999999999999989 ) with 1 message: 'Current expected value is 0.5' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.5' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.6 == Approx( 0.6 ) with 1 message: 'Current expected value is 0.6' +ok {test-number} - gen.get() == Approx(expected) for: 0.59999999999999987 == Approx( 0.59999999999999987 ) with 1 message: 'Current expected value is 0.6' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.6' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.7 == Approx( 0.7 ) with 1 message: 'Current expected value is 0.7' +ok {test-number} - gen.get() == Approx(expected) for: 0.69999999999999984 == Approx( 0.69999999999999984 ) with 1 message: 'Current expected value is 0.7' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.7' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.8 == Approx( 0.8 ) with 1 message: 'Current expected value is 0.8' +ok {test-number} - gen.get() == Approx(expected) for: 0.79999999999999982 == Approx( 0.79999999999999982 ) with 1 message: 'Current expected value is 0.8' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.8' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.9 == Approx( 0.9 ) with 1 message: 'Current expected value is 0.9' +ok {test-number} - gen.get() == Approx(expected) for: 0.8999999999999998 == Approx( 0.8999999999999998 ) with 1 message: 'Current expected value is 0.9' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.9' # Generators internals -ok {test-number} - gen.get() == Approx( rangeEnd ) for: 1.0 == Approx( 1.0 ) +ok {test-number} - gen.get() == Approx( rangeEnd ) for: 0.99999999999999978 == Approx( 1.0 ) # Generators internals ok {test-number} - !(gen.next()) for: !false # Generators internals @@ -1675,19 +1675,19 @@ ok {test-number} - gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) wit # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.7 == Approx( -0.7 ) with 1 message: 'Current expected value is -0.7' +ok {test-number} - gen.get() == Approx(expected) for: -0.69999999999999996 == Approx( -0.69999999999999996 ) with 1 message: 'Current expected value is -0.7' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.7' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.4 == Approx( -0.4 ) with 1 message: 'Current expected value is -0.4' +ok {test-number} - gen.get() == Approx(expected) for: -0.39999999999999997 == Approx( -0.39999999999999997 ) with 1 message: 'Current expected value is -0.4' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.4' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.1 == Approx( -0.1 ) with 1 message: 'Current expected value is -0.1' +ok {test-number} - gen.get() == Approx(expected) for: -0.09999999999999998 == Approx( -0.09999999999999998 ) with 1 message: 'Current expected value is -0.1' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.1' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.2 == Approx( 0.2 ) with 1 message: 'Current expected value is 0.2' +ok {test-number} - gen.get() == Approx(expected) for: 0.20000000000000001 == Approx( 0.20000000000000001 ) with 1 message: 'Current expected value is 0.2' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.2' # Generators internals @@ -1701,19 +1701,19 @@ ok {test-number} - gen.get() == Approx(expected) for: -1.0 == Approx( -1.0 ) wit # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -1' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.7 == Approx( -0.7 ) with 1 message: 'Current expected value is -0.7' +ok {test-number} - gen.get() == Approx(expected) for: -0.69999999999999996 == Approx( -0.69999999999999996 ) with 1 message: 'Current expected value is -0.7' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.7' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.4 == Approx( -0.4 ) with 1 message: 'Current expected value is -0.4' +ok {test-number} - gen.get() == Approx(expected) for: -0.39999999999999997 == Approx( -0.39999999999999997 ) with 1 message: 'Current expected value is -0.4' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.4' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: -0.1 == Approx( -0.1 ) with 1 message: 'Current expected value is -0.1' +ok {test-number} - gen.get() == Approx(expected) for: -0.09999999999999998 == Approx( -0.09999999999999998 ) with 1 message: 'Current expected value is -0.1' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is -0.1' # Generators internals -ok {test-number} - gen.get() == Approx(expected) for: 0.2 == Approx( 0.2 ) with 1 message: 'Current expected value is 0.2' +ok {test-number} - gen.get() == Approx(expected) for: 0.20000000000000001 == Approx( 0.20000000000000001 ) with 1 message: 'Current expected value is 0.2' # Generators internals ok {test-number} - gen.next() for: true with 1 message: 'Current expected value is 0.2' # Generators internals @@ -1775,13 +1775,13 @@ ok {test-number} - gen.get() == -7 for: -7 == -7 # Generators internals ok {test-number} - !(gen.next()) for: !false # Greater-than inequalities with different epsilons -ok {test-number} - d >= Approx( 1.22 ) for: 1.23 >= Approx( 1.22 ) +ok {test-number} - d >= Approx( 1.22 ) for: 1.22999999999999998 >= Approx( 1.21999999999999997 ) # Greater-than inequalities with different epsilons -ok {test-number} - d >= Approx( 1.23 ) for: 1.23 >= Approx( 1.23 ) +ok {test-number} - d >= Approx( 1.23 ) for: 1.22999999999999998 >= Approx( 1.22999999999999998 ) # Greater-than inequalities with different epsilons -ok {test-number} - !(d >= Approx( 1.24 )) for: !(1.23 >= Approx( 1.24 )) +ok {test-number} - !(d >= Approx( 1.24 )) for: !(1.22999999999999998 >= Approx( 1.23999999999999999 )) # Greater-than inequalities with different epsilons -ok {test-number} - d >= Approx( 1.24 ).epsilon(0.1) for: 1.23 >= Approx( 1.24 ) +ok {test-number} - d >= Approx( 1.24 ).epsilon(0.1) for: 1.22999999999999998 >= Approx( 1.23999999999999999 ) # Hashers with different seed produce different hash with same test case ok {test-number} - h1( dummy ) != h2( dummy ) for: 3422778688 (0x) != 130711275 (0x) # Hashers with same seed produce same hash @@ -1835,9 +1835,9 @@ not ok {test-number} - unexpected exception with message: 'Exception translation # Inequality checks that should fail not ok {test-number} - data.int_seven != 7 for: 7 != 7 # Inequality checks that should fail -not ok {test-number} - data.float_nine_point_one != Approx( 9.1f ) for: 9.1f != Approx( 9.1000003815 ) +not ok {test-number} - data.float_nine_point_one != Approx( 9.1f ) for: 9.100000381f != Approx( 9.10000038146972656 ) # Inequality checks that should fail -not ok {test-number} - data.double_pi != Approx( 3.1415926535 ) for: 3.1415926535 != Approx( 3.1415926535 ) +not ok {test-number} - data.double_pi != Approx( 3.1415926535 ) for: 3.14159265350000005 != Approx( 3.14159265350000005 ) # Inequality checks that should fail not ok {test-number} - data.str_hello != "hello" for: "hello" != "hello" # Inequality checks that should fail @@ -1847,15 +1847,15 @@ ok {test-number} - data.int_seven != 6 for: 7 != 6 # Inequality checks that should succeed ok {test-number} - data.int_seven != 8 for: 7 != 8 # Inequality checks that should succeed -ok {test-number} - data.float_nine_point_one != Approx( 9.11f ) for: 9.1f != Approx( 9.1099996567 ) +ok {test-number} - data.float_nine_point_one != Approx( 9.11f ) for: 9.100000381f != Approx( 9.10999965667724609 ) # Inequality checks that should succeed -ok {test-number} - data.float_nine_point_one != Approx( 9.0f ) for: 9.1f != Approx( 9.0 ) +ok {test-number} - data.float_nine_point_one != Approx( 9.0f ) for: 9.100000381f != Approx( 9.0 ) # Inequality checks that should succeed -ok {test-number} - data.float_nine_point_one != Approx( 1 ) for: 9.1f != Approx( 1.0 ) +ok {test-number} - data.float_nine_point_one != Approx( 1 ) for: 9.100000381f != Approx( 1.0 ) # Inequality checks that should succeed -ok {test-number} - data.float_nine_point_one != Approx( 0 ) for: 9.1f != Approx( 0.0 ) +ok {test-number} - data.float_nine_point_one != Approx( 0 ) for: 9.100000381f != Approx( 0.0 ) # Inequality checks that should succeed -ok {test-number} - data.double_pi != Approx( 3.1415 ) for: 3.1415926535 != Approx( 3.1415 ) +ok {test-number} - data.double_pi != Approx( 3.1415 ) for: 3.14159265350000005 != Approx( 3.14150000000000018 ) # Inequality checks that should succeed ok {test-number} - data.str_hello != "goodbye" for: "hello" != "goodbye" # Inequality checks that should succeed @@ -1903,13 +1903,13 @@ ok {test-number} - sstream.str() == "\"\\\\/\\t\\r\\n\"" for: ""\\/\t\r\n"" == " # Lambdas in assertions ok {test-number} - []() { return true; }() for: true # Less-than inequalities with different epsilons -ok {test-number} - d <= Approx( 1.24 ) for: 1.23 <= Approx( 1.24 ) +ok {test-number} - d <= Approx( 1.24 ) for: 1.22999999999999998 <= Approx( 1.23999999999999999 ) # Less-than inequalities with different epsilons -ok {test-number} - d <= Approx( 1.23 ) for: 1.23 <= Approx( 1.23 ) +ok {test-number} - d <= Approx( 1.23 ) for: 1.22999999999999998 <= Approx( 1.22999999999999998 ) # Less-than inequalities with different epsilons -ok {test-number} - !(d <= Approx( 1.22 )) for: !(1.23 <= Approx( 1.22 )) +ok {test-number} - !(d <= Approx( 1.22 )) for: !(1.22999999999999998 <= Approx( 1.21999999999999997 )) # Less-than inequalities with different epsilons -ok {test-number} - d <= Approx( 1.22 ).epsilon(0.1) for: 1.23 <= Approx( 1.22 ) +ok {test-number} - d <= Approx( 1.22 ).epsilon(0.1) for: 1.22999999999999998 <= Approx( 1.21999999999999997 ) # ManuallyRegistered ok {test-number} - with 1 message: 'was called' # Matchers can be (AllOf) composed with the && operator @@ -2039,11 +2039,11 @@ not ok {test-number} - data.int_seven >= 8 for: 7 >= 8 # Ordering comparison checks that should fail not ok {test-number} - data.int_seven <= 6 for: 7 <= 6 # Ordering comparison checks that should fail -not ok {test-number} - data.float_nine_point_one < 9 for: 9.1f < 9 +not ok {test-number} - data.float_nine_point_one < 9 for: 9.100000381f < 9 # Ordering comparison checks that should fail -not ok {test-number} - data.float_nine_point_one > 10 for: 9.1f > 10 +not ok {test-number} - data.float_nine_point_one > 10 for: 9.100000381f > 10 # Ordering comparison checks that should fail -not ok {test-number} - data.float_nine_point_one > 9.2 for: 9.1f > 9.2 +not ok {test-number} - data.float_nine_point_one > 9.2 for: 9.100000381f > 9.19999999999999929 # Ordering comparison checks that should fail not ok {test-number} - data.str_hello > "hello" for: "hello" > "hello" # Ordering comparison checks that should fail @@ -2077,11 +2077,11 @@ ok {test-number} - data.int_seven <= 7 for: 7 <= 7 # Ordering comparison checks that should succeed ok {test-number} - data.int_seven <= 8 for: 7 <= 8 # Ordering comparison checks that should succeed -ok {test-number} - data.float_nine_point_one > 9 for: 9.1f > 9 +ok {test-number} - data.float_nine_point_one > 9 for: 9.100000381f > 9 # Ordering comparison checks that should succeed -ok {test-number} - data.float_nine_point_one < 10 for: 9.1f < 10 +ok {test-number} - data.float_nine_point_one < 10 for: 9.100000381f < 10 # Ordering comparison checks that should succeed -ok {test-number} - data.float_nine_point_one < 9.2 for: 9.1f < 9.2 +ok {test-number} - data.float_nine_point_one < 9.2 for: 9.100000381f < 9.19999999999999929 # Ordering comparison checks that should succeed ok {test-number} - data.str_hello <= "hello" for: "hello" <= "hello" # Ordering comparison checks that should succeed @@ -2417,7 +2417,7 @@ ok {test-number} - config.benchmarkResamples == 20000 for: 20000 (0x # Process can be configured on command line ok {test-number} - cli.parse({ "test", "--benchmark-confidence-interval=0.99" }) for: {?} # Process can be configured on command line -ok {test-number} - config.benchmarkConfidenceInterval == Catch::Approx(0.99) for: 0.99 == Approx( 0.99 ) +ok {test-number} - config.benchmarkConfidenceInterval == Catch::Approx(0.99) for: 0.98999999999999999 == Approx( 0.98999999999999999 ) # Process can be configured on command line ok {test-number} - cli.parse({ "test", "--benchmark-no-analysis" }) for: {?} # Process can be configured on command line @@ -2595,21 +2595,21 @@ ok {test-number} - v.capacity() >= 10 for: 10 >= 10 # Scenario: Vector resizing affects size and capacity ok {test-number} - v.size() == 0 for: 0 == 0 # Some simple comparisons between doubles -ok {test-number} - d == Approx( 1.23 ) for: 1.23 == Approx( 1.23 ) +ok {test-number} - d == Approx( 1.23 ) for: 1.22999999999999998 == Approx( 1.22999999999999998 ) # Some simple comparisons between doubles -ok {test-number} - d != Approx( 1.22 ) for: 1.23 != Approx( 1.22 ) +ok {test-number} - d != Approx( 1.22 ) for: 1.22999999999999998 != Approx( 1.21999999999999997 ) # Some simple comparisons between doubles -ok {test-number} - d != Approx( 1.24 ) for: 1.23 != Approx( 1.24 ) +ok {test-number} - d != Approx( 1.24 ) for: 1.22999999999999998 != Approx( 1.23999999999999999 ) # Some simple comparisons between doubles -ok {test-number} - d == 1.23_a for: 1.23 == Approx( 1.23 ) +ok {test-number} - d == 1.23_a for: 1.22999999999999998 == Approx( 1.22999999999999998 ) # Some simple comparisons between doubles -ok {test-number} - d != 1.22_a for: 1.23 != Approx( 1.22 ) +ok {test-number} - d != 1.22_a for: 1.22999999999999998 != Approx( 1.21999999999999997 ) # Some simple comparisons between doubles -ok {test-number} - Approx( d ) == 1.23 for: Approx( 1.23 ) == 1.23 +ok {test-number} - Approx( d ) == 1.23 for: Approx( 1.22999999999999998 ) == 1.22999999999999998 # Some simple comparisons between doubles -ok {test-number} - Approx( d ) != 1.22 for: Approx( 1.23 ) != 1.22 +ok {test-number} - Approx( d ) != 1.22 for: Approx( 1.22999999999999998 ) != 1.21999999999999997 # Some simple comparisons between doubles -ok {test-number} - Approx( d ) != 1.24 for: Approx( 1.23 ) != 1.24 +ok {test-number} - Approx( d ) != 1.24 for: Approx( 1.22999999999999998 ) != 1.23999999999999999 # StartsWith string matcher not ok {test-number} - testStringForMatching(), StartsWith( "This String" ) for: "this string contains 'abc' as a substring" starts with: "This String" # StartsWith string matcher @@ -3319,7 +3319,7 @@ ok {test-number} - vector_a, RangeEquals( array_a_plus_1, close_enough ) for: { # Type conversions of RangeEquals and similar ok {test-number} - vector_a, UnorderedRangeEquals( array_a_plus_1, close_enough ) for: { 1, 2, 3 } unordered elements are { 2, 3, 4 } # Unexpected exceptions can be translated -not ok {test-number} - unexpected exception with message: '3.14' +not ok {test-number} - unexpected exception with message: '3.14000000000000012' # Upcasting special member functions ok {test-number} - bptr->i == 3 for: 3 == 3 # Upcasting special member functions @@ -3611,21 +3611,21 @@ ok {test-number} - unrelated::ADL_size{}, SizeIs(12) for: {?} has size == 12 # Usage of the SizeIs range matcher ok {test-number} - has_size{}, SizeIs(13) for: {?} has size == 13 # Use a custom approx -ok {test-number} - d == approx( 1.23 ) for: 1.23 == Approx( 1.23 ) +ok {test-number} - d == approx( 1.23 ) for: 1.22999999999999998 == Approx( 1.22999999999999998 ) # Use a custom approx -ok {test-number} - d == approx( 1.22 ) for: 1.23 == Approx( 1.22 ) +ok {test-number} - d == approx( 1.22 ) for: 1.22999999999999998 == Approx( 1.21999999999999997 ) # Use a custom approx -ok {test-number} - d == approx( 1.24 ) for: 1.23 == Approx( 1.24 ) +ok {test-number} - d == approx( 1.24 ) for: 1.22999999999999998 == Approx( 1.23999999999999999 ) # Use a custom approx -ok {test-number} - d != approx( 1.25 ) for: 1.23 != Approx( 1.25 ) +ok {test-number} - d != approx( 1.25 ) for: 1.22999999999999998 != Approx( 1.25 ) # Use a custom approx -ok {test-number} - approx( d ) == 1.23 for: Approx( 1.23 ) == 1.23 +ok {test-number} - approx( d ) == 1.23 for: Approx( 1.22999999999999998 ) == 1.22999999999999998 # Use a custom approx -ok {test-number} - approx( d ) == 1.22 for: Approx( 1.23 ) == 1.22 +ok {test-number} - approx( d ) == 1.22 for: Approx( 1.22999999999999998 ) == 1.21999999999999997 # Use a custom approx -ok {test-number} - approx( d ) == 1.24 for: Approx( 1.23 ) == 1.24 +ok {test-number} - approx( d ) == 1.24 for: Approx( 1.22999999999999998 ) == 1.23999999999999999 # Use a custom approx -ok {test-number} - approx( d ) != 1.25 for: Approx( 1.23 ) != 1.25 +ok {test-number} - approx( d ) != 1.25 for: Approx( 1.22999999999999998 ) != 1.25 # Variadic macros ok {test-number} - with 1 message: 'no assertions' # Vector Approx matcher @@ -3951,11 +3951,11 @@ ok {test-number} - # SKIP 'skipping because answer = 43' # empty tags are not allowed ok {test-number} - Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo) # erfc_inv -ok {test-number} - erfc_inv(1.103560) == Approx(-0.09203687623843015) for: -0.0920368762 == Approx( -0.0920368762 ) +ok {test-number} - erfc_inv(1.103560) == Approx(-0.09203687623843015) for: -0.09203687623843014 == Approx( -0.09203687623843015 ) # erfc_inv -ok {test-number} - erfc_inv(1.067400) == Approx(-0.05980291115763361) for: -0.0598029112 == Approx( -0.0598029112 ) +ok {test-number} - erfc_inv(1.067400) == Approx(-0.05980291115763361) for: -0.05980291115763361 == Approx( -0.05980291115763361 ) # erfc_inv -ok {test-number} - erfc_inv(0.050000) == Approx(1.38590382434967796) for: 1.3859038243 == Approx( 1.3859038243 ) +ok {test-number} - erfc_inv(0.050000) == Approx(1.38590382434967796) for: 1.38590382434967774 == Approx( 1.38590382434967796 ) # estimate_clock_resolution ok {test-number} - res.mean.count() == rate for: 2000.0 == 2000 (0x) # estimate_clock_resolution @@ -4096,22 +4096,12 @@ ok {test-number} - # SKIP ok {test-number} - s == "7" for: "7" == "7" # non-copyable objects ok {test-number} - ti == typeid(int) for: {?} == {?} -# normal_cdf -ok {test-number} - normal_cdf(0.000000) == Approx(0.50000000000000000) for: 0.5 == Approx( 0.5 ) -# normal_cdf -ok {test-number} - normal_cdf(1.000000) == Approx(0.84134474606854293) for: 0.8413447461 == Approx( 0.8413447461 ) -# normal_cdf -ok {test-number} - normal_cdf(-1.000000) == Approx(0.15865525393145705) for: 0.1586552539 == Approx( 0.1586552539 ) -# normal_cdf -ok {test-number} - normal_cdf(2.809729) == Approx(0.99752083845315409) for: 0.9975208385 == Approx( 0.9975208385 ) -# normal_cdf -ok {test-number} - normal_cdf(-1.352570) == Approx(0.08809652095066035) for: 0.088096521 == Approx( 0.088096521 ) # normal_quantile -ok {test-number} - normal_quantile(0.551780) == Approx(0.13015979861484198) for: 0.1301597986 == Approx( 0.1301597986 ) +ok {test-number} - normal_quantile(0.551780) == Approx(0.13015979861484198) for: 0.13015979861484195 == Approx( 0.13015979861484198 ) # normal_quantile -ok {test-number} - normal_quantile(0.533700) == Approx(0.08457408802851875) for: 0.084574088 == Approx( 0.084574088 ) +ok {test-number} - normal_quantile(0.533700) == Approx(0.08457408802851875) for: 0.08457408802851875 == Approx( 0.08457408802851875 ) # normal_quantile -ok {test-number} - normal_quantile(0.025000) == Approx(-1.95996398454005449) for: -1.9599639845 == Approx( -1.9599639845 ) +ok {test-number} - normal_quantile(0.025000) == Approx(-1.95996398454005449) for: -1.95996398454005405 == Approx( -1.95996398454005449 ) # not allowed ok {test-number} - # not prints unscoped info from previous failures @@ -4395,15 +4385,15 @@ ok {test-number} - "{ }" == ::Catch::Detail::stringify(type{}) for: "{ }" == "{ # tuple<> ok {test-number} - "{ }" == ::Catch::Detail::stringify(value) for: "{ }" == "{ }" # tuple -ok {test-number} - "1.2f" == ::Catch::Detail::stringify(float(1.2)) for: "1.2f" == "1.2f" +ok {test-number} - "1.5f" == ::Catch::Detail::stringify(float(1.5)) for: "1.5f" == "1.5f" # tuple -ok {test-number} - "{ 1.2f, 0 }" == ::Catch::Detail::stringify(type{1.2f,0}) for: "{ 1.2f, 0 }" == "{ 1.2f, 0 }" +ok {test-number} - "{ 1.5f, 0 }" == ::Catch::Detail::stringify(type{1.5f,0}) for: "{ 1.5f, 0 }" == "{ 1.5f, 0 }" # tuple ok {test-number} - "{ 0 }" == ::Catch::Detail::stringify(type{0}) for: "{ 0 }" == "{ 0 }" # tuple ok {test-number} - "{ \"hello\", \"world\" }" == ::Catch::Detail::stringify(type{"hello","world"}) for: "{ "hello", "world" }" == "{ "hello", "world" }" # tuple,tuple<>,float> -ok {test-number} - "{ { 42 }, { }, 1.2f }" == ::Catch::Detail::stringify(value) for: "{ { 42 }, { }, 1.2f }" == "{ { 42 }, { }, 1.2f }" +ok {test-number} - "{ { 42 }, { }, 1.5f }" == ::Catch::Detail::stringify(value) for: "{ { 42 }, { }, 1.5f }" == "{ { 42 }, { }, 1.5f }" # uniform samples ok {test-number} - e.point == 23 for: 23.0 == 23 # uniform samples @@ -4411,7 +4401,7 @@ ok {test-number} - e.upper_bound == 23 for: 23.0 == 23 # uniform samples ok {test-number} - e.lower_bound == 23 for: 23.0 == 23 # uniform samples -ok {test-number} - e.confidence_interval == 0.95 for: 0.95 == 0.95 +ok {test-number} - e.confidence_interval == 0.95 for: 0.94999999999999996 == 0.94999999999999996 # uniform_integer_distribution can return the bounds ok {test-number} - dist.a() == -10 for: -10 == -10 # uniform_integer_distribution can return the bounds @@ -4538,5 +4528,5 @@ ok {test-number} - q3 == 23. for: 23.0 == 23.0 ok {test-number} - # xmlentitycheck ok {test-number} - -1..2272 +1..2267 diff --git a/third_party/Catch2/tests/SelfTest/Baselines/teamcity.sw.approved.txt b/third_party/Catch2/tests/SelfTest/Baselines/teamcity.sw.approved.txt index 2a2c40cf..cec3a0ee 100644 --- a/third_party/Catch2/tests/SelfTest/Baselines/teamcity.sw.approved.txt +++ b/third_party/Catch2/tests/SelfTest/Baselines/teamcity.sw.approved.txt @@ -318,16 +318,16 @@ ##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|n...............................................................................|n|nCondition.tests.cpp:|nexpression failed|n CHECK( data.int_seven == 6 )|nwith expansion:|n 7 == 6|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.int_seven == 8 )|nwith expansion:|n 7 == 8|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.int_seven == 0 )|nwith expansion:|n 7 == 0|n- failure ignore as test marked as |'ok to fail|'|n'] -##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 9.11f ) )|nwith expansion:|n 9.1f == Approx( 9.1099996567 )|n- failure ignore as test marked as |'ok to fail|'|n'] -##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 9.0f ) )|nwith expansion:|n 9.1f == Approx( 9.0 )|n- failure ignore as test marked as |'ok to fail|'|n'] -##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 1 ) )|nwith expansion:|n 9.1f == Approx( 1.0 )|n- failure ignore as test marked as |'ok to fail|'|n'] -##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 0 ) )|nwith expansion:|n 9.1f == Approx( 0.0 )|n- failure ignore as test marked as |'ok to fail|'|n'] -##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.double_pi == Approx( 3.1415 ) )|nwith expansion:|n 3.1415926535 == Approx( 3.1415 )|n- failure ignore as test marked as |'ok to fail|'|n'] +##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 9.11f ) )|nwith expansion:|n 9.100000381f|n==|nApprox( 9.10999965667724609 )|n- failure ignore as test marked as |'ok to fail|'|n'] +##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 9.0f ) )|nwith expansion:|n 9.100000381f == Approx( 9.0 )|n- failure ignore as test marked as |'ok to fail|'|n'] +##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 1 ) )|nwith expansion:|n 9.100000381f == Approx( 1.0 )|n- failure ignore as test marked as |'ok to fail|'|n'] +##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 0 ) )|nwith expansion:|n 9.100000381f == Approx( 0.0 )|n- failure ignore as test marked as |'ok to fail|'|n'] +##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.double_pi == Approx( 3.1415 ) )|nwith expansion:|n 3.14159265350000005|n==|nApprox( 3.14150000000000018 )|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.str_hello == "goodbye" )|nwith expansion:|n "hello" == "goodbye"|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.str_hello == "hell" )|nwith expansion:|n "hello" == "hell"|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.str_hello == "hello1" )|nwith expansion:|n "hello" == "hello1"|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.str_hello.size() == 6 )|nwith expansion:|n 5 == 6|n- failure ignore as test marked as |'ok to fail|'|n'] -##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( x == Approx( 1.301 ) )|nwith expansion:|n 1.3 == Approx( 1.301 )|n- failure ignore as test marked as |'ok to fail|'|n'] +##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( x == Approx( 1.301 ) )|nwith expansion:|n 1.30000000000000027|n==|nApprox( 1.30099999999999993 )|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testFinished name='Equality checks that should fail' duration="{duration}"] ##teamcity[testStarted name='Equality checks that should succeed'] ##teamcity[testFinished name='Equality checks that should succeed' duration="{duration}"] @@ -415,8 +415,8 @@ ##teamcity[testFinished name='Incomplete AssertionHandler' duration="{duration}"] ##teamcity[testStarted name='Inequality checks that should fail'] ##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:|n...............................................................................|n|nCondition.tests.cpp:|nexpression failed|n CHECK( data.int_seven != 7 )|nwith expansion:|n 7 != 7|n- failure ignore as test marked as |'ok to fail|'|n'] -##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one != Approx( 9.1f ) )|nwith expansion:|n 9.1f != Approx( 9.1000003815 )|n- failure ignore as test marked as |'ok to fail|'|n'] -##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.double_pi != Approx( 3.1415926535 ) )|nwith expansion:|n 3.1415926535 != Approx( 3.1415926535 )|n- failure ignore as test marked as |'ok to fail|'|n'] +##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one != Approx( 9.1f ) )|nwith expansion:|n 9.100000381f|n!=|nApprox( 9.10000038146972656 )|n- failure ignore as test marked as |'ok to fail|'|n'] +##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.double_pi != Approx( 3.1415926535 ) )|nwith expansion:|n 3.14159265350000005|n!=|nApprox( 3.14159265350000005 )|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.str_hello != "hello" )|nwith expansion:|n "hello" != "hello"|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.str_hello.size() != 5 )|nwith expansion:|n 5 != 5|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testFinished name='Inequality checks that should fail' duration="{duration}"] @@ -479,9 +479,9 @@ ##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.int_seven < -1 )|nwith expansion:|n 7 < -1|n'] ##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.int_seven >= 8 )|nwith expansion:|n 7 >= 8|n'] ##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.int_seven <= 6 )|nwith expansion:|n 7 <= 6|n'] -##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one < 9 )|nwith expansion:|n 9.1f < 9|n'] -##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one > 10 )|nwith expansion:|n 9.1f > 10|n'] -##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one > 9.2 )|nwith expansion:|n 9.1f > 9.2|n'] +##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one < 9 )|nwith expansion:|n 9.100000381f < 9|n'] +##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one > 10 )|nwith expansion:|n 9.100000381f > 10|n'] +##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one > 9.2 )|nwith expansion:|n 9.100000381f > 9.19999999999999929|n'] ##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.str_hello > "hello" )|nwith expansion:|n "hello" > "hello"|n'] ##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.str_hello < "hello" )|nwith expansion:|n "hello" < "hello"|n'] ##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.str_hello > "hellp" )|nwith expansion:|n "hello" > "hellp"|n'] @@ -673,7 +673,7 @@ ##teamcity[testStarted name='Type conversions of RangeEquals and similar'] ##teamcity[testFinished name='Type conversions of RangeEquals and similar' duration="{duration}"] ##teamcity[testStarted name='Unexpected exceptions can be translated'] -##teamcity[testFailed name='Unexpected exceptions can be translated' message='Exception.tests.cpp:|n...............................................................................|n|nException.tests.cpp:|nunexpected exception with message:|n "3.14"'] +##teamcity[testFailed name='Unexpected exceptions can be translated' message='Exception.tests.cpp:|n...............................................................................|n|nException.tests.cpp:|nunexpected exception with message:|n "3.14000000000000012"'] ##teamcity[testFinished name='Unexpected exceptions can be translated' duration="{duration}"] ##teamcity[testStarted name='Upcasting special member functions'] ##teamcity[testFinished name='Upcasting special member functions' duration="{duration}"] @@ -861,8 +861,6 @@ loose text artifact ##teamcity[testFinished name='non streamable - with conv. op' duration="{duration}"] ##teamcity[testStarted name='non-copyable objects'] ##teamcity[testFinished name='non-copyable objects' duration="{duration}"] -##teamcity[testStarted name='normal_cdf'] -##teamcity[testFinished name='normal_cdf' duration="{duration}"] ##teamcity[testStarted name='normal_quantile'] ##teamcity[testFinished name='normal_quantile' duration="{duration}"] ##teamcity[testStarted name='not allowed'] diff --git a/third_party/Catch2/tests/SelfTest/Baselines/teamcity.sw.multi.approved.txt b/third_party/Catch2/tests/SelfTest/Baselines/teamcity.sw.multi.approved.txt index 24ed5d98..6f7d8f19 100644 --- a/third_party/Catch2/tests/SelfTest/Baselines/teamcity.sw.multi.approved.txt +++ b/third_party/Catch2/tests/SelfTest/Baselines/teamcity.sw.multi.approved.txt @@ -318,16 +318,16 @@ ##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|n...............................................................................|n|nCondition.tests.cpp:|nexpression failed|n CHECK( data.int_seven == 6 )|nwith expansion:|n 7 == 6|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.int_seven == 8 )|nwith expansion:|n 7 == 8|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.int_seven == 0 )|nwith expansion:|n 7 == 0|n- failure ignore as test marked as |'ok to fail|'|n'] -##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 9.11f ) )|nwith expansion:|n 9.1f == Approx( 9.1099996567 )|n- failure ignore as test marked as |'ok to fail|'|n'] -##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 9.0f ) )|nwith expansion:|n 9.1f == Approx( 9.0 )|n- failure ignore as test marked as |'ok to fail|'|n'] -##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 1 ) )|nwith expansion:|n 9.1f == Approx( 1.0 )|n- failure ignore as test marked as |'ok to fail|'|n'] -##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 0 ) )|nwith expansion:|n 9.1f == Approx( 0.0 )|n- failure ignore as test marked as |'ok to fail|'|n'] -##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.double_pi == Approx( 3.1415 ) )|nwith expansion:|n 3.1415926535 == Approx( 3.1415 )|n- failure ignore as test marked as |'ok to fail|'|n'] +##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 9.11f ) )|nwith expansion:|n 9.100000381f|n==|nApprox( 9.10999965667724609 )|n- failure ignore as test marked as |'ok to fail|'|n'] +##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 9.0f ) )|nwith expansion:|n 9.100000381f == Approx( 9.0 )|n- failure ignore as test marked as |'ok to fail|'|n'] +##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 1 ) )|nwith expansion:|n 9.100000381f == Approx( 1.0 )|n- failure ignore as test marked as |'ok to fail|'|n'] +##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one == Approx( 0 ) )|nwith expansion:|n 9.100000381f == Approx( 0.0 )|n- failure ignore as test marked as |'ok to fail|'|n'] +##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.double_pi == Approx( 3.1415 ) )|nwith expansion:|n 3.14159265350000005|n==|nApprox( 3.14150000000000018 )|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.str_hello == "goodbye" )|nwith expansion:|n "hello" == "goodbye"|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.str_hello == "hell" )|nwith expansion:|n "hello" == "hell"|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.str_hello == "hello1" )|nwith expansion:|n "hello" == "hello1"|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.str_hello.size() == 6 )|nwith expansion:|n 5 == 6|n- failure ignore as test marked as |'ok to fail|'|n'] -##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( x == Approx( 1.301 ) )|nwith expansion:|n 1.3 == Approx( 1.301 )|n- failure ignore as test marked as |'ok to fail|'|n'] +##teamcity[testIgnored name='Equality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( x == Approx( 1.301 ) )|nwith expansion:|n 1.30000000000000027|n==|nApprox( 1.30099999999999993 )|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testFinished name='Equality checks that should fail' duration="{duration}"] ##teamcity[testStarted name='Equality checks that should succeed'] ##teamcity[testFinished name='Equality checks that should succeed' duration="{duration}"] @@ -415,8 +415,8 @@ ##teamcity[testFinished name='Incomplete AssertionHandler' duration="{duration}"] ##teamcity[testStarted name='Inequality checks that should fail'] ##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:|n...............................................................................|n|nCondition.tests.cpp:|nexpression failed|n CHECK( data.int_seven != 7 )|nwith expansion:|n 7 != 7|n- failure ignore as test marked as |'ok to fail|'|n'] -##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one != Approx( 9.1f ) )|nwith expansion:|n 9.1f != Approx( 9.1000003815 )|n- failure ignore as test marked as |'ok to fail|'|n'] -##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.double_pi != Approx( 3.1415926535 ) )|nwith expansion:|n 3.1415926535 != Approx( 3.1415926535 )|n- failure ignore as test marked as |'ok to fail|'|n'] +##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one != Approx( 9.1f ) )|nwith expansion:|n 9.100000381f|n!=|nApprox( 9.10000038146972656 )|n- failure ignore as test marked as |'ok to fail|'|n'] +##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.double_pi != Approx( 3.1415926535 ) )|nwith expansion:|n 3.14159265350000005|n!=|nApprox( 3.14159265350000005 )|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.str_hello != "hello" )|nwith expansion:|n "hello" != "hello"|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testIgnored name='Inequality checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.str_hello.size() != 5 )|nwith expansion:|n 5 != 5|n- failure ignore as test marked as |'ok to fail|'|n'] ##teamcity[testFinished name='Inequality checks that should fail' duration="{duration}"] @@ -479,9 +479,9 @@ ##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.int_seven < -1 )|nwith expansion:|n 7 < -1|n'] ##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.int_seven >= 8 )|nwith expansion:|n 7 >= 8|n'] ##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.int_seven <= 6 )|nwith expansion:|n 7 <= 6|n'] -##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one < 9 )|nwith expansion:|n 9.1f < 9|n'] -##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one > 10 )|nwith expansion:|n 9.1f > 10|n'] -##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one > 9.2 )|nwith expansion:|n 9.1f > 9.2|n'] +##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one < 9 )|nwith expansion:|n 9.100000381f < 9|n'] +##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one > 10 )|nwith expansion:|n 9.100000381f > 10|n'] +##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.float_nine_point_one > 9.2 )|nwith expansion:|n 9.100000381f > 9.19999999999999929|n'] ##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.str_hello > "hello" )|nwith expansion:|n "hello" > "hello"|n'] ##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.str_hello < "hello" )|nwith expansion:|n "hello" < "hello"|n'] ##teamcity[testFailed name='Ordering comparison checks that should fail' message='Condition.tests.cpp:|nexpression failed|n CHECK( data.str_hello > "hellp" )|nwith expansion:|n "hello" > "hellp"|n'] @@ -673,7 +673,7 @@ ##teamcity[testStarted name='Type conversions of RangeEquals and similar'] ##teamcity[testFinished name='Type conversions of RangeEquals and similar' duration="{duration}"] ##teamcity[testStarted name='Unexpected exceptions can be translated'] -##teamcity[testFailed name='Unexpected exceptions can be translated' message='Exception.tests.cpp:|n...............................................................................|n|nException.tests.cpp:|nunexpected exception with message:|n "3.14"'] +##teamcity[testFailed name='Unexpected exceptions can be translated' message='Exception.tests.cpp:|n...............................................................................|n|nException.tests.cpp:|nunexpected exception with message:|n "3.14000000000000012"'] ##teamcity[testFinished name='Unexpected exceptions can be translated' duration="{duration}"] ##teamcity[testStarted name='Upcasting special member functions'] ##teamcity[testFinished name='Upcasting special member functions' duration="{duration}"] @@ -860,8 +860,6 @@ ##teamcity[testFinished name='non streamable - with conv. op' duration="{duration}"] ##teamcity[testStarted name='non-copyable objects'] ##teamcity[testFinished name='non-copyable objects' duration="{duration}"] -##teamcity[testStarted name='normal_cdf'] -##teamcity[testFinished name='normal_cdf' duration="{duration}"] ##teamcity[testStarted name='normal_quantile'] ##teamcity[testFinished name='normal_quantile' duration="{duration}"] ##teamcity[testStarted name='not allowed'] diff --git a/third_party/Catch2/tests/SelfTest/Baselines/xml.sw.approved.txt b/third_party/Catch2/tests/SelfTest/Baselines/xml.sw.approved.txt index e3a6dc0f..f8acf1d4 100644 --- a/third_party/Catch2/tests/SelfTest/Baselines/xml.sw.approved.txt +++ b/third_party/Catch2/tests/SelfTest/Baselines/xml.sw.approved.txt @@ -2150,7 +2150,9 @@ Nor would this d == 1.23_a - 1.23 == Approx( 1.23 ) + 1.22999999999999998 +== +Approx( 1.22999999999999998 ) @@ -2158,7 +2160,9 @@ Nor would this d != 1.22_a - 1.23 != Approx( 1.22 ) + 1.22999999999999998 +!= +Approx( 1.21999999999999997 ) @@ -2166,7 +2170,9 @@ Nor would this -d == -1.23_a - -1.23 == Approx( -1.23 ) + -1.22999999999999998 +== +Approx( -1.22999999999999998 ) @@ -2174,7 +2180,9 @@ Nor would this d == 1.2_a .epsilon(.1) - 1.23 == Approx( 1.2 ) + 1.22999999999999998 +== +Approx( 1.19999999999999996 ) @@ -2182,7 +2190,9 @@ Nor would this d != 1.2_a .epsilon(.001) - 1.23 != Approx( 1.2 ) + 1.22999999999999998 +!= +Approx( 1.19999999999999996 ) @@ -2190,7 +2200,7 @@ Nor would this d == 1_a .epsilon(.3) - 1.23 == Approx( 1.0 ) + 1.22999999999999998 == Approx( 1.0 ) @@ -2264,7 +2274,7 @@ Nor would this 100.3 != Approx(100.0) - 100.3 != Approx( 100.0 ) + 100.29999999999999716 != Approx( 100.0 ) @@ -2272,7 +2282,7 @@ Nor would this 100.3 == Approx(100.0).margin(0.5) - 100.3 == Approx( 100.0 ) + 100.29999999999999716 == Approx( 100.0 ) @@ -2432,7 +2442,9 @@ Nor would this divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) - 3.1428571429 == Approx( 3.141 ) + 3.14285714285714279 +== +Approx( 3.14100000000000001 ) @@ -2440,7 +2452,9 @@ Nor would this divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) - 3.1428571429 != Approx( 3.141 ) + 3.14285714285714279 +!= +Approx( 3.14100000000000001 ) @@ -2451,7 +2465,9 @@ Nor would this d != Approx( 1.231 ) - 1.23 != Approx( 1.231 ) + 1.22999999999999998 +!= +Approx( 1.23100000000000009 ) @@ -2459,7 +2475,9 @@ Nor would this d == Approx( 1.231 ).epsilon( 0.1 ) - 1.23 == Approx( 1.231 ) + 1.22999999999999998 +== +Approx( 1.23100000000000009 ) @@ -2470,7 +2488,9 @@ Nor would this 1.23f == Approx( 1.23f ) - 1.23f == Approx( 1.2300000191 ) + 1.230000019f +== +Approx( 1.23000001907348633 ) @@ -2532,7 +2552,9 @@ Nor would this 1.234f == Approx( dMedium ) - 1.234f == Approx( 1.234 ) + 1.233999968f +== +Approx( 1.23399999999999999 ) @@ -2540,7 +2562,9 @@ Nor would this dMedium == Approx( 1.234f ) - 1.234 == Approx( 1.2339999676 ) + 1.23399999999999999 +== +Approx( 1.23399996757507324 ) @@ -4290,7 +4314,7 @@ C 101.000001 != Approx(100).epsilon(0.01) - 101.000001 != Approx( 100.0 ) + 101.00000099999999748 != Approx( 100.0 ) @@ -4438,7 +4462,7 @@ C 101.01 != Approx(100).epsilon(0.01) - 101.01 != Approx( 100.0 ) + 101.01000000000000512 != Approx( 100.0 ) @@ -4473,7 +4497,9 @@ C data.float_nine_point_one == Approx( 9.11f ) - 9.1f == Approx( 9.1099996567 ) + 9.100000381f +== +Approx( 9.10999965667724609 ) @@ -4481,7 +4507,7 @@ C data.float_nine_point_one == Approx( 9.0f ) - 9.1f == Approx( 9.0 ) + 9.100000381f == Approx( 9.0 ) @@ -4489,7 +4515,7 @@ C data.float_nine_point_one == Approx( 1 ) - 9.1f == Approx( 1.0 ) + 9.100000381f == Approx( 1.0 ) @@ -4497,7 +4523,7 @@ C data.float_nine_point_one == Approx( 0 ) - 9.1f == Approx( 0.0 ) + 9.100000381f == Approx( 0.0 ) @@ -4505,7 +4531,9 @@ C data.double_pi == Approx( 3.1415 ) - 3.1415926535 == Approx( 3.1415 ) + 3.14159265350000005 +== +Approx( 3.14150000000000018 ) @@ -4545,7 +4573,9 @@ C x == Approx( 1.301 ) - 1.3 == Approx( 1.301 ) + 1.30000000000000027 +== +Approx( 1.30099999999999993 ) @@ -4564,7 +4594,9 @@ C data.float_nine_point_one == Approx( 9.1f ) - 9.1f == Approx( 9.1000003815 ) + 9.100000381f +== +Approx( 9.10000038146972656 ) @@ -4572,7 +4604,9 @@ C data.double_pi == Approx( 3.1415926535 ) - 3.1415926535 == Approx( 3.1415926535 ) + 3.14159265350000005 +== +Approx( 3.14159265350000005 ) @@ -4604,7 +4638,9 @@ C x == Approx( 1.3 ) - 1.3 == Approx( 1.3 ) + 1.30000000000000027 +== +Approx( 1.30000000000000004 ) @@ -5006,7 +5042,7 @@ C 10., WithinRel( 11.1, 0.1 ) - 10.0 and 11.1 are within 10% of each other + 10.0 and 11.09999999999999964 are within 10% of each other @@ -5014,7 +5050,7 @@ C 10., !WithinRel( 11.2, 0.1 ) - 10.0 not and 11.2 are within 10% of each other + 10.0 not and 11.19999999999999929 are within 10% of each other @@ -5068,7 +5104,7 @@ C 0., !WithinAbs( 1., 0.99 ) - 0.0 not is within 0.99 of 1.0 + 0.0 not is within 0.98999999999999999 of 1.0 @@ -5076,7 +5112,7 @@ C 0., !WithinAbs( 1., 0.99 ) - 0.0 not is within 0.99 of 1.0 + 0.0 not is within 0.98999999999999999 of 1.0 @@ -5108,7 +5144,7 @@ C -10., WithinAbs( -9.6, 0.5 ) - -10.0 is within 0.5 of -9.6 + -10.0 is within 0.5 of -9.59999999999999964 @@ -5127,7 +5163,7 @@ C nextafter( 1., 2. ), WithinULP( 1., 1 ) - 1.0 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00]) + 1.00000000000000022 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00]) @@ -5270,7 +5306,7 @@ C 10.f, WithinRel( 11.1f, 0.1f ) - 10.0f and 11.1000003815 are within 10% of each other + 10.0f and 11.10000038146972656 are within 10% of each other @@ -5278,7 +5314,7 @@ C 10.f, !WithinRel( 11.2f, 0.1f ) - 10.0f not and 11.1999998093 are within 10% of each other + 10.0f not and 11.19999980926513672 are within 10% of each other @@ -5332,7 +5368,7 @@ C 0.f, !WithinAbs( 1.f, 0.99f ) - 0.0f not is within 0.9900000095 of 1.0 + 0.0f not is within 0.99000000953674316 of 1.0 @@ -5340,7 +5376,7 @@ C 0.f, !WithinAbs( 1.f, 0.99f ) - 0.0f not is within 0.9900000095 of 1.0 + 0.0f not is within 0.99000000953674316 of 1.0 @@ -5380,7 +5416,7 @@ C -10.f, WithinAbs( -9.6f, 0.5f ) - -10.0f is within 0.5 of -9.6000003815 + -10.0f is within 0.5 of -9.60000038146972656 @@ -5407,7 +5443,7 @@ C nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) - 1.0f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) + 1.000000119f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) @@ -5474,7 +5510,7 @@ C 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) - 0.0001f ( is within 0.001 of 0.0 or and 0.0 are within 10% of each other ) + 0.0001f ( is within 0.00100000004749745 of 0.0 or and 0.0 are within 10% of each other ) @@ -7274,7 +7310,9 @@ C gen.get() == Approx(expected) - -0.9 == Approx( -0.9 ) + -0.90000000000000002 +== +Approx( -0.90000000000000002 ) @@ -7296,7 +7334,9 @@ C gen.get() == Approx(expected) - -0.8 == Approx( -0.8 ) + -0.80000000000000004 +== +Approx( -0.80000000000000004 ) @@ -7318,7 +7358,9 @@ C gen.get() == Approx(expected) - -0.7 == Approx( -0.7 ) + -0.70000000000000007 +== +Approx( -0.70000000000000007 ) @@ -7340,7 +7382,9 @@ C gen.get() == Approx(expected) - -0.6 == Approx( -0.6 ) + -0.60000000000000009 +== +Approx( -0.60000000000000009 ) @@ -7362,7 +7406,9 @@ C gen.get() == Approx(expected) - -0.5 == Approx( -0.5 ) + -0.50000000000000011 +== +Approx( -0.50000000000000011 ) @@ -7384,7 +7430,9 @@ C gen.get() == Approx(expected) - -0.4 == Approx( -0.4 ) + -0.40000000000000013 +== +Approx( -0.40000000000000013 ) @@ -7406,7 +7454,9 @@ C gen.get() == Approx(expected) - -0.3 == Approx( -0.3 ) + -0.30000000000000016 +== +Approx( -0.30000000000000016 ) @@ -7428,7 +7478,9 @@ C gen.get() == Approx(expected) - -0.2 == Approx( -0.2 ) + -0.20000000000000015 +== +Approx( -0.20000000000000015 ) @@ -7450,7 +7502,9 @@ C gen.get() == Approx(expected) - -0.1 == Approx( -0.1 ) + -0.10000000000000014 +== +Approx( -0.10000000000000014 ) @@ -7472,7 +7526,9 @@ C gen.get() == Approx(expected) - -0.0 == Approx( -0.0 ) + -0.00000000000000014 +== +Approx( -0.00000000000000014 ) @@ -7494,7 +7550,9 @@ C gen.get() == Approx(expected) - 0.1 == Approx( 0.1 ) + 0.09999999999999987 +== +Approx( 0.09999999999999987 ) @@ -7516,7 +7574,9 @@ C gen.get() == Approx(expected) - 0.2 == Approx( 0.2 ) + 0.19999999999999987 +== +Approx( 0.19999999999999987 ) @@ -7538,7 +7598,9 @@ C gen.get() == Approx(expected) - 0.3 == Approx( 0.3 ) + 0.29999999999999988 +== +Approx( 0.29999999999999988 ) @@ -7560,7 +7622,9 @@ C gen.get() == Approx(expected) - 0.4 == Approx( 0.4 ) + 0.39999999999999991 +== +Approx( 0.39999999999999991 ) @@ -7582,7 +7646,9 @@ C gen.get() == Approx(expected) - 0.5 == Approx( 0.5 ) + 0.49999999999999989 +== +Approx( 0.49999999999999989 ) @@ -7604,7 +7670,9 @@ C gen.get() == Approx(expected) - 0.6 == Approx( 0.6 ) + 0.59999999999999987 +== +Approx( 0.59999999999999987 ) @@ -7626,7 +7694,9 @@ C gen.get() == Approx(expected) - 0.7 == Approx( 0.7 ) + 0.69999999999999984 +== +Approx( 0.69999999999999984 ) @@ -7648,7 +7718,9 @@ C gen.get() == Approx(expected) - 0.8 == Approx( 0.8 ) + 0.79999999999999982 +== +Approx( 0.79999999999999982 ) @@ -7670,7 +7742,9 @@ C gen.get() == Approx(expected) - 0.9 == Approx( 0.9 ) + 0.8999999999999998 +== +Approx( 0.8999999999999998 ) @@ -7689,7 +7763,7 @@ C gen.get() == Approx( rangeEnd ) - 1.0 == Approx( 1.0 ) + 0.99999999999999978 == Approx( 1.0 ) @@ -7742,7 +7816,9 @@ C gen.get() == Approx(expected) - -0.7 == Approx( -0.7 ) + -0.69999999999999996 +== +Approx( -0.69999999999999996 ) @@ -7764,7 +7840,9 @@ C gen.get() == Approx(expected) - -0.4 == Approx( -0.4 ) + -0.39999999999999997 +== +Approx( -0.39999999999999997 ) @@ -7786,7 +7864,9 @@ C gen.get() == Approx(expected) - -0.1 == Approx( -0.1 ) + -0.09999999999999998 +== +Approx( -0.09999999999999998 ) @@ -7808,7 +7888,9 @@ C gen.get() == Approx(expected) - 0.2 == Approx( 0.2 ) + 0.20000000000000001 +== +Approx( 0.20000000000000001 ) @@ -7894,7 +7976,9 @@ C gen.get() == Approx(expected) - -0.7 == Approx( -0.7 ) + -0.69999999999999996 +== +Approx( -0.69999999999999996 ) @@ -7916,7 +8000,9 @@ C gen.get() == Approx(expected) - -0.4 == Approx( -0.4 ) + -0.39999999999999997 +== +Approx( -0.39999999999999997 ) @@ -7938,7 +8024,9 @@ C gen.get() == Approx(expected) - -0.1 == Approx( -0.1 ) + -0.09999999999999998 +== +Approx( -0.09999999999999998 ) @@ -7960,7 +8048,9 @@ C gen.get() == Approx(expected) - 0.2 == Approx( 0.2 ) + 0.20000000000000001 +== +Approx( 0.20000000000000001 ) @@ -8264,7 +8354,9 @@ C d >= Approx( 1.22 ) - 1.23 >= Approx( 1.22 ) + 1.22999999999999998 +>= +Approx( 1.21999999999999997 ) @@ -8272,7 +8364,9 @@ C d >= Approx( 1.23 ) - 1.23 >= Approx( 1.23 ) + 1.22999999999999998 +>= +Approx( 1.22999999999999998 ) @@ -8280,7 +8374,9 @@ C !(d >= Approx( 1.24 )) - !(1.23 >= Approx( 1.24 )) + !(1.22999999999999998 +>= +Approx( 1.23999999999999999 )) @@ -8288,7 +8384,9 @@ C d >= Approx( 1.24 ).epsilon(0.1) - 1.23 >= Approx( 1.24 ) + 1.22999999999999998 +>= +Approx( 1.23999999999999999 ) @@ -8662,7 +8760,9 @@ C data.float_nine_point_one != Approx( 9.1f ) - 9.1f != Approx( 9.1000003815 ) + 9.100000381f +!= +Approx( 9.10000038146972656 ) @@ -8670,7 +8770,9 @@ C data.double_pi != Approx( 3.1415926535 ) - 3.1415926535 != Approx( 3.1415926535 ) + 3.14159265350000005 +!= +Approx( 3.14159265350000005 ) @@ -8713,7 +8815,9 @@ C data.float_nine_point_one != Approx( 9.11f ) - 9.1f != Approx( 9.1099996567 ) + 9.100000381f +!= +Approx( 9.10999965667724609 ) @@ -8721,7 +8825,7 @@ C data.float_nine_point_one != Approx( 9.0f ) - 9.1f != Approx( 9.0 ) + 9.100000381f != Approx( 9.0 ) @@ -8729,7 +8833,7 @@ C data.float_nine_point_one != Approx( 1 ) - 9.1f != Approx( 1.0 ) + 9.100000381f != Approx( 1.0 ) @@ -8737,7 +8841,7 @@ C data.float_nine_point_one != Approx( 0 ) - 9.1f != Approx( 0.0 ) + 9.100000381f != Approx( 0.0 ) @@ -8745,7 +8849,9 @@ C data.double_pi != Approx( 3.1415 ) - 3.1415926535 != Approx( 3.1415 ) + 3.14159265350000005 +!= +Approx( 3.14150000000000018 ) @@ -9070,7 +9176,9 @@ C d <= Approx( 1.24 ) - 1.23 <= Approx( 1.24 ) + 1.22999999999999998 +<= +Approx( 1.23999999999999999 ) @@ -9078,7 +9186,9 @@ C d <= Approx( 1.23 ) - 1.23 <= Approx( 1.23 ) + 1.22999999999999998 +<= +Approx( 1.22999999999999998 ) @@ -9086,7 +9196,9 @@ C !(d <= Approx( 1.22 )) - !(1.23 <= Approx( 1.22 )) + !(1.22999999999999998 +<= +Approx( 1.21999999999999997 )) @@ -9094,7 +9206,9 @@ C d <= Approx( 1.22 ).epsilon(0.1) - 1.23 <= Approx( 1.22 ) + 1.22999999999999998 +<= +Approx( 1.21999999999999997 ) @@ -9625,7 +9739,7 @@ C data.float_nine_point_one < 9 - 9.1f < 9 + 9.100000381f < 9 @@ -9633,7 +9747,7 @@ C data.float_nine_point_one > 10 - 9.1f > 10 + 9.100000381f > 10 @@ -9641,7 +9755,7 @@ C data.float_nine_point_one > 9.2 - 9.1f > 9.2 + 9.100000381f > 9.19999999999999929 @@ -9780,7 +9894,7 @@ C data.float_nine_point_one > 9 - 9.1f > 9 + 9.100000381f > 9 @@ -9788,7 +9902,7 @@ C data.float_nine_point_one < 10 - 9.1f < 10 + 9.100000381f < 10 @@ -9796,7 +9910,7 @@ C data.float_nine_point_one < 9.2 - 9.1f < 9.2 + 9.100000381f < 9.19999999999999929 @@ -11531,7 +11645,9 @@ C config.benchmarkConfidenceInterval == Catch::Approx(0.99) - 0.99 == Approx( 0.99 ) + 0.98999999999999999 +== +Approx( 0.98999999999999999 ) @@ -12677,7 +12793,9 @@ A string sent to stderr via clog d == Approx( 1.23 ) - 1.23 == Approx( 1.23 ) + 1.22999999999999998 +== +Approx( 1.22999999999999998 ) @@ -12685,7 +12803,9 @@ A string sent to stderr via clog d != Approx( 1.22 ) - 1.23 != Approx( 1.22 ) + 1.22999999999999998 +!= +Approx( 1.21999999999999997 ) @@ -12693,7 +12813,9 @@ A string sent to stderr via clog d != Approx( 1.24 ) - 1.23 != Approx( 1.24 ) + 1.22999999999999998 +!= +Approx( 1.23999999999999999 ) @@ -12701,7 +12823,9 @@ A string sent to stderr via clog d == 1.23_a - 1.23 == Approx( 1.23 ) + 1.22999999999999998 +== +Approx( 1.22999999999999998 ) @@ -12709,7 +12833,9 @@ A string sent to stderr via clog d != 1.22_a - 1.23 != Approx( 1.22 ) + 1.22999999999999998 +!= +Approx( 1.21999999999999997 ) @@ -12717,7 +12843,9 @@ A string sent to stderr via clog Approx( d ) == 1.23 - Approx( 1.23 ) == 1.23 + Approx( 1.22999999999999998 ) +== +1.22999999999999998 @@ -12725,7 +12853,9 @@ A string sent to stderr via clog Approx( d ) != 1.22 - Approx( 1.23 ) != 1.22 + Approx( 1.22999999999999998 ) +!= +1.21999999999999997 @@ -12733,7 +12863,9 @@ A string sent to stderr via clog Approx( d ) != 1.24 - Approx( 1.23 ) != 1.24 + Approx( 1.22999999999999998 ) +!= +1.23999999999999999 @@ -15923,7 +16055,7 @@ There is no extra whitespace here - 3.14 + 3.14000000000000012 @@ -17468,7 +17600,9 @@ There is no extra whitespace here d == approx( 1.23 ) - 1.23 == Approx( 1.23 ) + 1.22999999999999998 +== +Approx( 1.22999999999999998 ) @@ -17476,7 +17610,9 @@ There is no extra whitespace here d == approx( 1.22 ) - 1.23 == Approx( 1.22 ) + 1.22999999999999998 +== +Approx( 1.21999999999999997 ) @@ -17484,7 +17620,9 @@ There is no extra whitespace here d == approx( 1.24 ) - 1.23 == Approx( 1.24 ) + 1.22999999999999998 +== +Approx( 1.23999999999999999 ) @@ -17492,7 +17630,7 @@ There is no extra whitespace here d != approx( 1.25 ) - 1.23 != Approx( 1.25 ) + 1.22999999999999998 != Approx( 1.25 ) @@ -17500,7 +17638,9 @@ There is no extra whitespace here approx( d ) == 1.23 - Approx( 1.23 ) == 1.23 + Approx( 1.22999999999999998 ) +== +1.22999999999999998 @@ -17508,7 +17648,9 @@ There is no extra whitespace here approx( d ) == 1.22 - Approx( 1.23 ) == 1.22 + Approx( 1.22999999999999998 ) +== +1.21999999999999997 @@ -17516,7 +17658,9 @@ There is no extra whitespace here approx( d ) == 1.24 - Approx( 1.23 ) == 1.24 + Approx( 1.22999999999999998 ) +== +1.23999999999999999 @@ -17524,7 +17668,7 @@ There is no extra whitespace here approx( d ) != 1.25 - Approx( 1.23 ) != 1.25 + Approx( 1.22999999999999998 ) != 1.25 @@ -18976,7 +19120,9 @@ There is no extra whitespace here erfc_inv(1.103560) == Approx(-0.09203687623843015) - -0.0920368762 == Approx( -0.0920368762 ) + -0.09203687623843014 +== +Approx( -0.09203687623843015 ) @@ -18984,7 +19130,9 @@ There is no extra whitespace here erfc_inv(1.067400) == Approx(-0.05980291115763361) - -0.0598029112 == Approx( -0.0598029112 ) + -0.05980291115763361 +== +Approx( -0.05980291115763361 ) @@ -18992,7 +19140,9 @@ There is no extra whitespace here erfc_inv(0.050000) == Approx(1.38590382434967796) - 1.3859038243 == Approx( 1.3859038243 ) + 1.38590382434967774 +== +Approx( 1.38590382434967796 ) @@ -19583,56 +19733,15 @@ b1! - - - - normal_cdf(0.000000) == Approx(0.50000000000000000) - - - 0.5 == Approx( 0.5 ) - - - - - normal_cdf(1.000000) == Approx(0.84134474606854293) - - - 0.8413447461 == Approx( 0.8413447461 ) - - - - - normal_cdf(-1.000000) == Approx(0.15865525393145705) - - - 0.1586552539 == Approx( 0.1586552539 ) - - - - - normal_cdf(2.809729) == Approx(0.99752083845315409) - - - 0.9975208385 == Approx( 0.9975208385 ) - - - - - normal_cdf(-1.352570) == Approx(0.08809652095066035) - - - 0.088096521 == Approx( 0.088096521 ) - - - - normal_quantile(0.551780) == Approx(0.13015979861484198) - 0.1301597986 == Approx( 0.1301597986 ) + 0.13015979861484195 +== +Approx( 0.13015979861484198 ) @@ -19640,7 +19749,9 @@ b1! normal_quantile(0.533700) == Approx(0.08457408802851875) - 0.084574088 == Approx( 0.084574088 ) + 0.08457408802851875 +== +Approx( 0.08457408802851875 ) @@ -19648,7 +19759,9 @@ b1! normal_quantile(0.025000) == Approx(-1.95996398454005449) - -1.9599639845 == Approx( -1.9599639845 ) + -1.95996398454005405 +== +Approx( -1.95996398454005449 ) @@ -21058,18 +21171,18 @@ b1! - "1.2f" == ::Catch::Detail::stringify(float(1.2)) + "1.5f" == ::Catch::Detail::stringify(float(1.5)) - "1.2f" == "1.2f" + "1.5f" == "1.5f" - "{ 1.2f, 0 }" == ::Catch::Detail::stringify(type{1.2f,0}) + "{ 1.5f, 0 }" == ::Catch::Detail::stringify(type{1.5f,0}) - "{ 1.2f, 0 }" == "{ 1.2f, 0 }" + "{ 1.5f, 0 }" == "{ 1.5f, 0 }" @@ -21101,12 +21214,12 @@ b1! - "{ { 42 }, { }, 1.2f }" == ::Catch::Detail::stringify(value) + "{ { 42 }, { }, 1.5f }" == ::Catch::Detail::stringify(value) - "{ { 42 }, { }, 1.2f }" + "{ { 42 }, { }, 1.5f }" == -"{ { 42 }, { }, 1.2f }" +"{ { 42 }, { }, 1.5f }" @@ -21141,7 +21254,7 @@ b1! e.confidence_interval == 0.95 - 0.95 == 0.95 + 0.94999999999999996 == 0.94999999999999996 @@ -21719,6 +21832,6 @@ b1! - - + + diff --git a/third_party/Catch2/tests/SelfTest/Baselines/xml.sw.multi.approved.txt b/third_party/Catch2/tests/SelfTest/Baselines/xml.sw.multi.approved.txt index 62a2740a..5d815a51 100644 --- a/third_party/Catch2/tests/SelfTest/Baselines/xml.sw.multi.approved.txt +++ b/third_party/Catch2/tests/SelfTest/Baselines/xml.sw.multi.approved.txt @@ -2150,7 +2150,9 @@ Nor would this d == 1.23_a - 1.23 == Approx( 1.23 ) + 1.22999999999999998 +== +Approx( 1.22999999999999998 ) @@ -2158,7 +2160,9 @@ Nor would this d != 1.22_a - 1.23 != Approx( 1.22 ) + 1.22999999999999998 +!= +Approx( 1.21999999999999997 ) @@ -2166,7 +2170,9 @@ Nor would this -d == -1.23_a - -1.23 == Approx( -1.23 ) + -1.22999999999999998 +== +Approx( -1.22999999999999998 ) @@ -2174,7 +2180,9 @@ Nor would this d == 1.2_a .epsilon(.1) - 1.23 == Approx( 1.2 ) + 1.22999999999999998 +== +Approx( 1.19999999999999996 ) @@ -2182,7 +2190,9 @@ Nor would this d != 1.2_a .epsilon(.001) - 1.23 != Approx( 1.2 ) + 1.22999999999999998 +!= +Approx( 1.19999999999999996 ) @@ -2190,7 +2200,7 @@ Nor would this d == 1_a .epsilon(.3) - 1.23 == Approx( 1.0 ) + 1.22999999999999998 == Approx( 1.0 ) @@ -2264,7 +2274,7 @@ Nor would this 100.3 != Approx(100.0) - 100.3 != Approx( 100.0 ) + 100.29999999999999716 != Approx( 100.0 ) @@ -2272,7 +2282,7 @@ Nor would this 100.3 == Approx(100.0).margin(0.5) - 100.3 == Approx( 100.0 ) + 100.29999999999999716 == Approx( 100.0 ) @@ -2432,7 +2442,9 @@ Nor would this divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) - 3.1428571429 == Approx( 3.141 ) + 3.14285714285714279 +== +Approx( 3.14100000000000001 ) @@ -2440,7 +2452,9 @@ Nor would this divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) - 3.1428571429 != Approx( 3.141 ) + 3.14285714285714279 +!= +Approx( 3.14100000000000001 ) @@ -2451,7 +2465,9 @@ Nor would this d != Approx( 1.231 ) - 1.23 != Approx( 1.231 ) + 1.22999999999999998 +!= +Approx( 1.23100000000000009 ) @@ -2459,7 +2475,9 @@ Nor would this d == Approx( 1.231 ).epsilon( 0.1 ) - 1.23 == Approx( 1.231 ) + 1.22999999999999998 +== +Approx( 1.23100000000000009 ) @@ -2470,7 +2488,9 @@ Nor would this 1.23f == Approx( 1.23f ) - 1.23f == Approx( 1.2300000191 ) + 1.230000019f +== +Approx( 1.23000001907348633 ) @@ -2532,7 +2552,9 @@ Nor would this 1.234f == Approx( dMedium ) - 1.234f == Approx( 1.234 ) + 1.233999968f +== +Approx( 1.23399999999999999 ) @@ -2540,7 +2562,9 @@ Nor would this dMedium == Approx( 1.234f ) - 1.234 == Approx( 1.2339999676 ) + 1.23399999999999999 +== +Approx( 1.23399996757507324 ) @@ -4290,7 +4314,7 @@ C 101.000001 != Approx(100).epsilon(0.01) - 101.000001 != Approx( 100.0 ) + 101.00000099999999748 != Approx( 100.0 ) @@ -4438,7 +4462,7 @@ C 101.01 != Approx(100).epsilon(0.01) - 101.01 != Approx( 100.0 ) + 101.01000000000000512 != Approx( 100.0 ) @@ -4473,7 +4497,9 @@ C data.float_nine_point_one == Approx( 9.11f ) - 9.1f == Approx( 9.1099996567 ) + 9.100000381f +== +Approx( 9.10999965667724609 ) @@ -4481,7 +4507,7 @@ C data.float_nine_point_one == Approx( 9.0f ) - 9.1f == Approx( 9.0 ) + 9.100000381f == Approx( 9.0 ) @@ -4489,7 +4515,7 @@ C data.float_nine_point_one == Approx( 1 ) - 9.1f == Approx( 1.0 ) + 9.100000381f == Approx( 1.0 ) @@ -4497,7 +4523,7 @@ C data.float_nine_point_one == Approx( 0 ) - 9.1f == Approx( 0.0 ) + 9.100000381f == Approx( 0.0 ) @@ -4505,7 +4531,9 @@ C data.double_pi == Approx( 3.1415 ) - 3.1415926535 == Approx( 3.1415 ) + 3.14159265350000005 +== +Approx( 3.14150000000000018 ) @@ -4545,7 +4573,9 @@ C x == Approx( 1.301 ) - 1.3 == Approx( 1.301 ) + 1.30000000000000027 +== +Approx( 1.30099999999999993 ) @@ -4564,7 +4594,9 @@ C data.float_nine_point_one == Approx( 9.1f ) - 9.1f == Approx( 9.1000003815 ) + 9.100000381f +== +Approx( 9.10000038146972656 ) @@ -4572,7 +4604,9 @@ C data.double_pi == Approx( 3.1415926535 ) - 3.1415926535 == Approx( 3.1415926535 ) + 3.14159265350000005 +== +Approx( 3.14159265350000005 ) @@ -4604,7 +4638,9 @@ C x == Approx( 1.3 ) - 1.3 == Approx( 1.3 ) + 1.30000000000000027 +== +Approx( 1.30000000000000004 ) @@ -5006,7 +5042,7 @@ C 10., WithinRel( 11.1, 0.1 ) - 10.0 and 11.1 are within 10% of each other + 10.0 and 11.09999999999999964 are within 10% of each other @@ -5014,7 +5050,7 @@ C 10., !WithinRel( 11.2, 0.1 ) - 10.0 not and 11.2 are within 10% of each other + 10.0 not and 11.19999999999999929 are within 10% of each other @@ -5068,7 +5104,7 @@ C 0., !WithinAbs( 1., 0.99 ) - 0.0 not is within 0.99 of 1.0 + 0.0 not is within 0.98999999999999999 of 1.0 @@ -5076,7 +5112,7 @@ C 0., !WithinAbs( 1., 0.99 ) - 0.0 not is within 0.99 of 1.0 + 0.0 not is within 0.98999999999999999 of 1.0 @@ -5108,7 +5144,7 @@ C -10., WithinAbs( -9.6, 0.5 ) - -10.0 is within 0.5 of -9.6 + -10.0 is within 0.5 of -9.59999999999999964 @@ -5127,7 +5163,7 @@ C nextafter( 1., 2. ), WithinULP( 1., 1 ) - 1.0 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00]) + 1.00000000000000022 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.0000000000000002e+00]) @@ -5270,7 +5306,7 @@ C 10.f, WithinRel( 11.1f, 0.1f ) - 10.0f and 11.1000003815 are within 10% of each other + 10.0f and 11.10000038146972656 are within 10% of each other @@ -5278,7 +5314,7 @@ C 10.f, !WithinRel( 11.2f, 0.1f ) - 10.0f not and 11.1999998093 are within 10% of each other + 10.0f not and 11.19999980926513672 are within 10% of each other @@ -5332,7 +5368,7 @@ C 0.f, !WithinAbs( 1.f, 0.99f ) - 0.0f not is within 0.9900000095 of 1.0 + 0.0f not is within 0.99000000953674316 of 1.0 @@ -5340,7 +5376,7 @@ C 0.f, !WithinAbs( 1.f, 0.99f ) - 0.0f not is within 0.9900000095 of 1.0 + 0.0f not is within 0.99000000953674316 of 1.0 @@ -5380,7 +5416,7 @@ C -10.f, WithinAbs( -9.6f, 0.5f ) - -10.0f is within 0.5 of -9.6000003815 + -10.0f is within 0.5 of -9.60000038146972656 @@ -5407,7 +5443,7 @@ C nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) - 1.0f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) + 1.000000119f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00]) @@ -5474,7 +5510,7 @@ C 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) - 0.0001f ( is within 0.001 of 0.0 or and 0.0 are within 10% of each other ) + 0.0001f ( is within 0.00100000004749745 of 0.0 or and 0.0 are within 10% of each other ) @@ -7274,7 +7310,9 @@ C gen.get() == Approx(expected) - -0.9 == Approx( -0.9 ) + -0.90000000000000002 +== +Approx( -0.90000000000000002 ) @@ -7296,7 +7334,9 @@ C gen.get() == Approx(expected) - -0.8 == Approx( -0.8 ) + -0.80000000000000004 +== +Approx( -0.80000000000000004 ) @@ -7318,7 +7358,9 @@ C gen.get() == Approx(expected) - -0.7 == Approx( -0.7 ) + -0.70000000000000007 +== +Approx( -0.70000000000000007 ) @@ -7340,7 +7382,9 @@ C gen.get() == Approx(expected) - -0.6 == Approx( -0.6 ) + -0.60000000000000009 +== +Approx( -0.60000000000000009 ) @@ -7362,7 +7406,9 @@ C gen.get() == Approx(expected) - -0.5 == Approx( -0.5 ) + -0.50000000000000011 +== +Approx( -0.50000000000000011 ) @@ -7384,7 +7430,9 @@ C gen.get() == Approx(expected) - -0.4 == Approx( -0.4 ) + -0.40000000000000013 +== +Approx( -0.40000000000000013 ) @@ -7406,7 +7454,9 @@ C gen.get() == Approx(expected) - -0.3 == Approx( -0.3 ) + -0.30000000000000016 +== +Approx( -0.30000000000000016 ) @@ -7428,7 +7478,9 @@ C gen.get() == Approx(expected) - -0.2 == Approx( -0.2 ) + -0.20000000000000015 +== +Approx( -0.20000000000000015 ) @@ -7450,7 +7502,9 @@ C gen.get() == Approx(expected) - -0.1 == Approx( -0.1 ) + -0.10000000000000014 +== +Approx( -0.10000000000000014 ) @@ -7472,7 +7526,9 @@ C gen.get() == Approx(expected) - -0.0 == Approx( -0.0 ) + -0.00000000000000014 +== +Approx( -0.00000000000000014 ) @@ -7494,7 +7550,9 @@ C gen.get() == Approx(expected) - 0.1 == Approx( 0.1 ) + 0.09999999999999987 +== +Approx( 0.09999999999999987 ) @@ -7516,7 +7574,9 @@ C gen.get() == Approx(expected) - 0.2 == Approx( 0.2 ) + 0.19999999999999987 +== +Approx( 0.19999999999999987 ) @@ -7538,7 +7598,9 @@ C gen.get() == Approx(expected) - 0.3 == Approx( 0.3 ) + 0.29999999999999988 +== +Approx( 0.29999999999999988 ) @@ -7560,7 +7622,9 @@ C gen.get() == Approx(expected) - 0.4 == Approx( 0.4 ) + 0.39999999999999991 +== +Approx( 0.39999999999999991 ) @@ -7582,7 +7646,9 @@ C gen.get() == Approx(expected) - 0.5 == Approx( 0.5 ) + 0.49999999999999989 +== +Approx( 0.49999999999999989 ) @@ -7604,7 +7670,9 @@ C gen.get() == Approx(expected) - 0.6 == Approx( 0.6 ) + 0.59999999999999987 +== +Approx( 0.59999999999999987 ) @@ -7626,7 +7694,9 @@ C gen.get() == Approx(expected) - 0.7 == Approx( 0.7 ) + 0.69999999999999984 +== +Approx( 0.69999999999999984 ) @@ -7648,7 +7718,9 @@ C gen.get() == Approx(expected) - 0.8 == Approx( 0.8 ) + 0.79999999999999982 +== +Approx( 0.79999999999999982 ) @@ -7670,7 +7742,9 @@ C gen.get() == Approx(expected) - 0.9 == Approx( 0.9 ) + 0.8999999999999998 +== +Approx( 0.8999999999999998 ) @@ -7689,7 +7763,7 @@ C gen.get() == Approx( rangeEnd ) - 1.0 == Approx( 1.0 ) + 0.99999999999999978 == Approx( 1.0 ) @@ -7742,7 +7816,9 @@ C gen.get() == Approx(expected) - -0.7 == Approx( -0.7 ) + -0.69999999999999996 +== +Approx( -0.69999999999999996 ) @@ -7764,7 +7840,9 @@ C gen.get() == Approx(expected) - -0.4 == Approx( -0.4 ) + -0.39999999999999997 +== +Approx( -0.39999999999999997 ) @@ -7786,7 +7864,9 @@ C gen.get() == Approx(expected) - -0.1 == Approx( -0.1 ) + -0.09999999999999998 +== +Approx( -0.09999999999999998 ) @@ -7808,7 +7888,9 @@ C gen.get() == Approx(expected) - 0.2 == Approx( 0.2 ) + 0.20000000000000001 +== +Approx( 0.20000000000000001 ) @@ -7894,7 +7976,9 @@ C gen.get() == Approx(expected) - -0.7 == Approx( -0.7 ) + -0.69999999999999996 +== +Approx( -0.69999999999999996 ) @@ -7916,7 +8000,9 @@ C gen.get() == Approx(expected) - -0.4 == Approx( -0.4 ) + -0.39999999999999997 +== +Approx( -0.39999999999999997 ) @@ -7938,7 +8024,9 @@ C gen.get() == Approx(expected) - -0.1 == Approx( -0.1 ) + -0.09999999999999998 +== +Approx( -0.09999999999999998 ) @@ -7960,7 +8048,9 @@ C gen.get() == Approx(expected) - 0.2 == Approx( 0.2 ) + 0.20000000000000001 +== +Approx( 0.20000000000000001 ) @@ -8264,7 +8354,9 @@ C d >= Approx( 1.22 ) - 1.23 >= Approx( 1.22 ) + 1.22999999999999998 +>= +Approx( 1.21999999999999997 ) @@ -8272,7 +8364,9 @@ C d >= Approx( 1.23 ) - 1.23 >= Approx( 1.23 ) + 1.22999999999999998 +>= +Approx( 1.22999999999999998 ) @@ -8280,7 +8374,9 @@ C !(d >= Approx( 1.24 )) - !(1.23 >= Approx( 1.24 )) + !(1.22999999999999998 +>= +Approx( 1.23999999999999999 )) @@ -8288,7 +8384,9 @@ C d >= Approx( 1.24 ).epsilon(0.1) - 1.23 >= Approx( 1.24 ) + 1.22999999999999998 +>= +Approx( 1.23999999999999999 ) @@ -8662,7 +8760,9 @@ C data.float_nine_point_one != Approx( 9.1f ) - 9.1f != Approx( 9.1000003815 ) + 9.100000381f +!= +Approx( 9.10000038146972656 ) @@ -8670,7 +8770,9 @@ C data.double_pi != Approx( 3.1415926535 ) - 3.1415926535 != Approx( 3.1415926535 ) + 3.14159265350000005 +!= +Approx( 3.14159265350000005 ) @@ -8713,7 +8815,9 @@ C data.float_nine_point_one != Approx( 9.11f ) - 9.1f != Approx( 9.1099996567 ) + 9.100000381f +!= +Approx( 9.10999965667724609 ) @@ -8721,7 +8825,7 @@ C data.float_nine_point_one != Approx( 9.0f ) - 9.1f != Approx( 9.0 ) + 9.100000381f != Approx( 9.0 ) @@ -8729,7 +8833,7 @@ C data.float_nine_point_one != Approx( 1 ) - 9.1f != Approx( 1.0 ) + 9.100000381f != Approx( 1.0 ) @@ -8737,7 +8841,7 @@ C data.float_nine_point_one != Approx( 0 ) - 9.1f != Approx( 0.0 ) + 9.100000381f != Approx( 0.0 ) @@ -8745,7 +8849,9 @@ C data.double_pi != Approx( 3.1415 ) - 3.1415926535 != Approx( 3.1415 ) + 3.14159265350000005 +!= +Approx( 3.14150000000000018 ) @@ -9070,7 +9176,9 @@ C d <= Approx( 1.24 ) - 1.23 <= Approx( 1.24 ) + 1.22999999999999998 +<= +Approx( 1.23999999999999999 ) @@ -9078,7 +9186,9 @@ C d <= Approx( 1.23 ) - 1.23 <= Approx( 1.23 ) + 1.22999999999999998 +<= +Approx( 1.22999999999999998 ) @@ -9086,7 +9196,9 @@ C !(d <= Approx( 1.22 )) - !(1.23 <= Approx( 1.22 )) + !(1.22999999999999998 +<= +Approx( 1.21999999999999997 )) @@ -9094,7 +9206,9 @@ C d <= Approx( 1.22 ).epsilon(0.1) - 1.23 <= Approx( 1.22 ) + 1.22999999999999998 +<= +Approx( 1.21999999999999997 ) @@ -9625,7 +9739,7 @@ C data.float_nine_point_one < 9 - 9.1f < 9 + 9.100000381f < 9 @@ -9633,7 +9747,7 @@ C data.float_nine_point_one > 10 - 9.1f > 10 + 9.100000381f > 10 @@ -9641,7 +9755,7 @@ C data.float_nine_point_one > 9.2 - 9.1f > 9.2 + 9.100000381f > 9.19999999999999929 @@ -9780,7 +9894,7 @@ C data.float_nine_point_one > 9 - 9.1f > 9 + 9.100000381f > 9 @@ -9788,7 +9902,7 @@ C data.float_nine_point_one < 10 - 9.1f < 10 + 9.100000381f < 10 @@ -9796,7 +9910,7 @@ C data.float_nine_point_one < 9.2 - 9.1f < 9.2 + 9.100000381f < 9.19999999999999929 @@ -11531,7 +11645,9 @@ C config.benchmarkConfidenceInterval == Catch::Approx(0.99) - 0.99 == Approx( 0.99 ) + 0.98999999999999999 +== +Approx( 0.98999999999999999 ) @@ -12677,7 +12793,9 @@ A string sent to stderr via clog d == Approx( 1.23 ) - 1.23 == Approx( 1.23 ) + 1.22999999999999998 +== +Approx( 1.22999999999999998 ) @@ -12685,7 +12803,9 @@ A string sent to stderr via clog d != Approx( 1.22 ) - 1.23 != Approx( 1.22 ) + 1.22999999999999998 +!= +Approx( 1.21999999999999997 ) @@ -12693,7 +12813,9 @@ A string sent to stderr via clog d != Approx( 1.24 ) - 1.23 != Approx( 1.24 ) + 1.22999999999999998 +!= +Approx( 1.23999999999999999 ) @@ -12701,7 +12823,9 @@ A string sent to stderr via clog d == 1.23_a - 1.23 == Approx( 1.23 ) + 1.22999999999999998 +== +Approx( 1.22999999999999998 ) @@ -12709,7 +12833,9 @@ A string sent to stderr via clog d != 1.22_a - 1.23 != Approx( 1.22 ) + 1.22999999999999998 +!= +Approx( 1.21999999999999997 ) @@ -12717,7 +12843,9 @@ A string sent to stderr via clog Approx( d ) == 1.23 - Approx( 1.23 ) == 1.23 + Approx( 1.22999999999999998 ) +== +1.22999999999999998 @@ -12725,7 +12853,9 @@ A string sent to stderr via clog Approx( d ) != 1.22 - Approx( 1.23 ) != 1.22 + Approx( 1.22999999999999998 ) +!= +1.21999999999999997 @@ -12733,7 +12863,9 @@ A string sent to stderr via clog Approx( d ) != 1.24 - Approx( 1.23 ) != 1.24 + Approx( 1.22999999999999998 ) +!= +1.23999999999999999 @@ -15923,7 +16055,7 @@ There is no extra whitespace here - 3.14 + 3.14000000000000012 @@ -17468,7 +17600,9 @@ There is no extra whitespace here d == approx( 1.23 ) - 1.23 == Approx( 1.23 ) + 1.22999999999999998 +== +Approx( 1.22999999999999998 ) @@ -17476,7 +17610,9 @@ There is no extra whitespace here d == approx( 1.22 ) - 1.23 == Approx( 1.22 ) + 1.22999999999999998 +== +Approx( 1.21999999999999997 ) @@ -17484,7 +17620,9 @@ There is no extra whitespace here d == approx( 1.24 ) - 1.23 == Approx( 1.24 ) + 1.22999999999999998 +== +Approx( 1.23999999999999999 ) @@ -17492,7 +17630,7 @@ There is no extra whitespace here d != approx( 1.25 ) - 1.23 != Approx( 1.25 ) + 1.22999999999999998 != Approx( 1.25 ) @@ -17500,7 +17638,9 @@ There is no extra whitespace here approx( d ) == 1.23 - Approx( 1.23 ) == 1.23 + Approx( 1.22999999999999998 ) +== +1.22999999999999998 @@ -17508,7 +17648,9 @@ There is no extra whitespace here approx( d ) == 1.22 - Approx( 1.23 ) == 1.22 + Approx( 1.22999999999999998 ) +== +1.21999999999999997 @@ -17516,7 +17658,9 @@ There is no extra whitespace here approx( d ) == 1.24 - Approx( 1.23 ) == 1.24 + Approx( 1.22999999999999998 ) +== +1.23999999999999999 @@ -17524,7 +17668,7 @@ There is no extra whitespace here approx( d ) != 1.25 - Approx( 1.23 ) != 1.25 + Approx( 1.22999999999999998 ) != 1.25 @@ -18976,7 +19120,9 @@ There is no extra whitespace here erfc_inv(1.103560) == Approx(-0.09203687623843015) - -0.0920368762 == Approx( -0.0920368762 ) + -0.09203687623843014 +== +Approx( -0.09203687623843015 ) @@ -18984,7 +19130,9 @@ There is no extra whitespace here erfc_inv(1.067400) == Approx(-0.05980291115763361) - -0.0598029112 == Approx( -0.0598029112 ) + -0.05980291115763361 +== +Approx( -0.05980291115763361 ) @@ -18992,7 +19140,9 @@ There is no extra whitespace here erfc_inv(0.050000) == Approx(1.38590382434967796) - 1.3859038243 == Approx( 1.3859038243 ) + 1.38590382434967774 +== +Approx( 1.38590382434967796 ) @@ -19582,56 +19732,15 @@ b1! - - - - normal_cdf(0.000000) == Approx(0.50000000000000000) - - - 0.5 == Approx( 0.5 ) - - - - - normal_cdf(1.000000) == Approx(0.84134474606854293) - - - 0.8413447461 == Approx( 0.8413447461 ) - - - - - normal_cdf(-1.000000) == Approx(0.15865525393145705) - - - 0.1586552539 == Approx( 0.1586552539 ) - - - - - normal_cdf(2.809729) == Approx(0.99752083845315409) - - - 0.9975208385 == Approx( 0.9975208385 ) - - - - - normal_cdf(-1.352570) == Approx(0.08809652095066035) - - - 0.088096521 == Approx( 0.088096521 ) - - - - normal_quantile(0.551780) == Approx(0.13015979861484198) - 0.1301597986 == Approx( 0.1301597986 ) + 0.13015979861484195 +== +Approx( 0.13015979861484198 ) @@ -19639,7 +19748,9 @@ b1! normal_quantile(0.533700) == Approx(0.08457408802851875) - 0.084574088 == Approx( 0.084574088 ) + 0.08457408802851875 +== +Approx( 0.08457408802851875 ) @@ -19647,7 +19758,9 @@ b1! normal_quantile(0.025000) == Approx(-1.95996398454005449) - -1.9599639845 == Approx( -1.9599639845 ) + -1.95996398454005405 +== +Approx( -1.95996398454005449 ) @@ -21057,18 +21170,18 @@ b1! - "1.2f" == ::Catch::Detail::stringify(float(1.2)) + "1.5f" == ::Catch::Detail::stringify(float(1.5)) - "1.2f" == "1.2f" + "1.5f" == "1.5f" - "{ 1.2f, 0 }" == ::Catch::Detail::stringify(type{1.2f,0}) + "{ 1.5f, 0 }" == ::Catch::Detail::stringify(type{1.5f,0}) - "{ 1.2f, 0 }" == "{ 1.2f, 0 }" + "{ 1.5f, 0 }" == "{ 1.5f, 0 }" @@ -21100,12 +21213,12 @@ b1! - "{ { 42 }, { }, 1.2f }" == ::Catch::Detail::stringify(value) + "{ { 42 }, { }, 1.5f }" == ::Catch::Detail::stringify(value) - "{ { 42 }, { }, 1.2f }" + "{ { 42 }, { }, 1.5f }" == -"{ { 42 }, { }, 1.2f }" +"{ { 42 }, { }, 1.5f }" @@ -21140,7 +21253,7 @@ b1! e.confidence_interval == 0.95 - 0.95 == 0.95 + 0.94999999999999996 == 0.94999999999999996 @@ -21718,6 +21831,6 @@ b1! - - + + diff --git a/third_party/Catch2/tests/SelfTest/IntrospectiveTests/InternalBenchmark.tests.cpp b/third_party/Catch2/tests/SelfTest/IntrospectiveTests/InternalBenchmark.tests.cpp index bc8d715b..69251d97 100644 --- a/third_party/Catch2/tests/SelfTest/IntrospectiveTests/InternalBenchmark.tests.cpp +++ b/third_party/Catch2/tests/SelfTest/IntrospectiveTests/InternalBenchmark.tests.cpp @@ -172,7 +172,7 @@ TEST_CASE("uniform samples", "[benchmark]") { } -TEST_CASE("normal_cdf", "[benchmark]") { +TEST_CASE("normal_cdf", "[benchmark][approvals]") { using Catch::Benchmark::Detail::normal_cdf; using Catch::Approx; CHECK(normal_cdf(0.000000) == Approx(0.50000000000000000)); diff --git a/third_party/Catch2/tests/SelfTest/UsageTests/ToStringGeneral.tests.cpp b/third_party/Catch2/tests/SelfTest/UsageTests/ToStringGeneral.tests.cpp index e073a40a..78c0c80a 100644 --- a/third_party/Catch2/tests/SelfTest/UsageTests/ToStringGeneral.tests.cpp +++ b/third_party/Catch2/tests/SelfTest/UsageTests/ToStringGeneral.tests.cpp @@ -124,8 +124,8 @@ TEST_CASE("Precision of floating point stringification can be set", "[toString][ const auto oldPrecision = sm::precision; const float testFloat = 1.12345678901234567899f; - auto str1 = sm::convert(testFloat); sm::precision = 5; + auto str1 = sm::convert( testFloat ); // "1." prefix = 2 chars, f suffix is another char CHECK(str1.size() == 3 + 5); diff --git a/third_party/Catch2/tests/SelfTest/UsageTests/ToStringTuple.tests.cpp b/third_party/Catch2/tests/SelfTest/UsageTests/ToStringTuple.tests.cpp index b2813a81..9d1d2c46 100644 --- a/third_party/Catch2/tests/SelfTest/UsageTests/ToStringTuple.tests.cpp +++ b/third_party/Catch2/tests/SelfTest/UsageTests/ToStringTuple.tests.cpp @@ -29,8 +29,8 @@ TEST_CASE( "tuple", "[toString][tuple]" ) TEST_CASE( "tuple", "[toString][tuple]" ) { typedef std::tuple type; - CHECK( "1.2f" == ::Catch::Detail::stringify(float(1.2)) ); - CHECK( "{ 1.2f, 0 }" == ::Catch::Detail::stringify(type{1.2f,0}) ); + CHECK( "1.5f" == ::Catch::Detail::stringify(float(1.5)) ); + CHECK( "{ 1.5f, 0 }" == ::Catch::Detail::stringify(type{1.5f,0}) ); } TEST_CASE( "tuple", "[toString][tuple]" ) @@ -42,8 +42,8 @@ TEST_CASE( "tuple", "[toString][tuple]" ) TEST_CASE( "tuple,tuple<>,float>", "[toString][tuple]" ) { typedef std::tuple,std::tuple<>,float> type; - type value { std::tuple{42}, {}, 1.2f }; - CHECK( "{ { 42 }, { }, 1.2f }" == ::Catch::Detail::stringify(value) ); + type value { std::tuple{42}, {}, 1.5f }; + CHECK( "{ { 42 }, { }, 1.5f }" == ::Catch::Detail::stringify(value) ); } TEST_CASE( "tuple", "[approvals][toString][tuple]" ) { diff --git a/third_party/abseil-cpp/CMake/AbseilDll.cmake b/third_party/abseil-cpp/CMake/AbseilDll.cmake index 47f3beeb..6d871552 100644 --- a/third_party/abseil-cpp/CMake/AbseilDll.cmake +++ b/third_party/abseil-cpp/CMake/AbseilDll.cmake @@ -66,6 +66,7 @@ set(ABSL_INTERNAL_DLL_FILES "cleanup/internal/cleanup.h" "container/btree_map.h" "container/btree_set.h" + "container/hash_container_defaults.h" "container/fixed_array.h" "container/flat_hash_map.h" "container/flat_hash_set.h" @@ -608,6 +609,9 @@ set(ABSL_INTERNAL_TEST_DLL_FILES "random/internal/mock_overload_set.h" "random/mocking_bit_gen.h" "random/mock_distributions.h" + "status/status_matchers.h" + "status/internal/status_matchers.cc" + "status/internal/status_matchers.h" "strings/cordz_test_helpers.h" "strings/cord_test_helpers.h" ) @@ -620,6 +624,7 @@ set(ABSL_INTERNAL_TEST_DLL_TARGETS "random_internal_distribution_test_util" "random_internal_mock_overload_set" "scoped_mock_log" + "status_matchers" ) include(CheckCXXSourceCompiles) diff --git a/third_party/abseil-cpp/absl/base/internal/spinlock.h b/third_party/abseil-cpp/absl/base/internal/spinlock.h index 301c3e3b..1bb260f4 100644 --- a/third_party/abseil-cpp/absl/base/internal/spinlock.h +++ b/third_party/abseil-cpp/absl/base/internal/spinlock.h @@ -89,7 +89,8 @@ class ABSL_LOCKABLE ABSL_ATTRIBUTE_WARN_UNUSED SpinLock { // acquisition was successful. If the lock was not acquired, false is // returned. If this SpinLock is free at the time of the call, TryLock // will return true with high probability. - inline bool TryLock() ABSL_EXCLUSIVE_TRYLOCK_FUNCTION(true) { + ABSL_MUST_USE_RESULT inline bool TryLock() + ABSL_EXCLUSIVE_TRYLOCK_FUNCTION(true) { ABSL_TSAN_MUTEX_PRE_LOCK(this, __tsan_mutex_try_lock); bool res = TryLockImpl(); ABSL_TSAN_MUTEX_POST_LOCK( @@ -120,7 +121,7 @@ class ABSL_LOCKABLE ABSL_ATTRIBUTE_WARN_UNUSED SpinLock { // Determine if the lock is held. When the lock is held by the invoking // thread, true will always be returned. Intended to be used as // CHECK(lock.IsHeld()). - inline bool IsHeld() const { + ABSL_MUST_USE_RESULT inline bool IsHeld() const { return (lockword_.load(std::memory_order_relaxed) & kSpinLockHeld) != 0; } diff --git a/third_party/abseil-cpp/absl/container/BUILD.bazel b/third_party/abseil-cpp/absl/container/BUILD.bazel index 2eaece69..859163f8 100644 --- a/third_party/abseil-cpp/absl/container/BUILD.bazel +++ b/third_party/abseil-cpp/absl/container/BUILD.bazel @@ -248,7 +248,7 @@ cc_library( linkopts = ABSL_DEFAULT_LINKOPTS, deps = [ ":container_memory", - ":hash_function_defaults", + ":hash_container_defaults", ":raw_hash_map", "//absl/algorithm:container", "//absl/base:core_headers", @@ -285,7 +285,7 @@ cc_library( linkopts = ABSL_DEFAULT_LINKOPTS, deps = [ ":container_memory", - ":hash_function_defaults", + ":hash_container_defaults", ":raw_hash_set", "//absl/algorithm:container", "//absl/base:core_headers", @@ -324,7 +324,7 @@ cc_library( linkopts = ABSL_DEFAULT_LINKOPTS, deps = [ ":container_memory", - ":hash_function_defaults", + ":hash_container_defaults", ":node_slot_policy", ":raw_hash_map", "//absl/algorithm:container", @@ -359,7 +359,7 @@ cc_library( linkopts = ABSL_DEFAULT_LINKOPTS, deps = [ ":container_memory", - ":hash_function_defaults", + ":hash_container_defaults", ":node_slot_policy", ":raw_hash_set", "//absl/algorithm:container", @@ -433,6 +433,17 @@ cc_library( ], ) +cc_library( + name = "hash_container_defaults", + hdrs = ["hash_container_defaults.h"], + copts = ABSL_DEFAULT_COPTS, + linkopts = ABSL_DEFAULT_LINKOPTS, + deps = [ + ":hash_function_defaults", + "//absl/base:config", + ], +) + cc_test( name = "hash_function_defaults_test", srcs = ["internal/hash_function_defaults_test.cc"], diff --git a/third_party/abseil-cpp/absl/container/CMakeLists.txt b/third_party/abseil-cpp/absl/container/CMakeLists.txt index 576e83e2..b1f5f9d8 100644 --- a/third_party/abseil-cpp/absl/container/CMakeLists.txt +++ b/third_party/abseil-cpp/absl/container/CMakeLists.txt @@ -289,7 +289,7 @@ absl_cc_library( DEPS absl::container_memory absl::core_headers - absl::hash_function_defaults + absl::hash_container_defaults absl::raw_hash_map absl::algorithm_container absl::memory @@ -326,7 +326,7 @@ absl_cc_library( ${ABSL_DEFAULT_COPTS} DEPS absl::container_memory - absl::hash_function_defaults + absl::hash_container_defaults absl::raw_hash_set absl::algorithm_container absl::core_headers @@ -368,7 +368,7 @@ absl_cc_library( DEPS absl::container_memory absl::core_headers - absl::hash_function_defaults + absl::hash_container_defaults absl::node_slot_policy absl::raw_hash_map absl::algorithm_container @@ -404,7 +404,7 @@ absl_cc_library( DEPS absl::container_memory absl::core_headers - absl::hash_function_defaults + absl::hash_container_defaults absl::node_slot_policy absl::raw_hash_set absl::algorithm_container @@ -430,6 +430,19 @@ absl_cc_test( GTest::gmock_main ) +absl_cc_library( + NAME + hash_container_defaults + HDRS + "hash_container_defaults.h" + COPTS + ${ABSL_DEFAULT_COPTS} + DEPS + absl::config + absl::hash_function_defaults + PUBLIC +) + # Internal-only target, do not depend on directly. absl_cc_library( NAME diff --git a/third_party/abseil-cpp/absl/container/flat_hash_map.h b/third_party/abseil-cpp/absl/container/flat_hash_map.h index a33c794f..aa2c5c8c 100644 --- a/third_party/abseil-cpp/absl/container/flat_hash_map.h +++ b/third_party/abseil-cpp/absl/container/flat_hash_map.h @@ -31,16 +31,15 @@ #define ABSL_CONTAINER_FLAT_HASH_MAP_H_ #include -#include +#include #include #include #include "absl/algorithm/container.h" #include "absl/base/macros.h" +#include "absl/container/hash_container_defaults.h" #include "absl/container/internal/container_memory.h" -#include "absl/container/internal/hash_function_defaults.h" // IWYU pragma: export #include "absl/container/internal/raw_hash_map.h" // IWYU pragma: export -#include "absl/memory/memory.h" namespace absl { ABSL_NAMESPACE_BEGIN @@ -119,9 +118,8 @@ struct FlatHashMapPolicy; // if (result != ducks.end()) { // std::cout << "Result: " << result->second << std::endl; // } -template , - class Eq = absl::container_internal::hash_default_eq, +template , + class Eq = DefaultHashContainerEq, class Allocator = std::allocator>> class flat_hash_map : public absl::container_internal::raw_hash_map< absl::container_internal::FlatHashMapPolicy, diff --git a/third_party/abseil-cpp/absl/container/flat_hash_set.h b/third_party/abseil-cpp/absl/container/flat_hash_set.h index 5f72f954..e558b071 100644 --- a/third_party/abseil-cpp/absl/container/flat_hash_set.h +++ b/third_party/abseil-cpp/absl/container/flat_hash_set.h @@ -36,8 +36,8 @@ #include "absl/algorithm/container.h" #include "absl/base/macros.h" +#include "absl/container/hash_container_defaults.h" #include "absl/container/internal/container_memory.h" -#include "absl/container/internal/hash_function_defaults.h" // IWYU pragma: export #include "absl/container/internal/raw_hash_set.h" // IWYU pragma: export #include "absl/memory/memory.h" @@ -114,8 +114,8 @@ struct FlatHashSetPolicy; // if (ducks.contains("dewey")) { // std::cout << "We found dewey!" << std::endl; // } -template , - class Eq = absl::container_internal::hash_default_eq, +template , + class Eq = DefaultHashContainerEq, class Allocator = std::allocator> class flat_hash_set : public absl::container_internal::raw_hash_set< diff --git a/third_party/abseil-cpp/absl/container/hash_container_defaults.h b/third_party/abseil-cpp/absl/container/hash_container_defaults.h new file mode 100644 index 00000000..eb944a7c --- /dev/null +++ b/third_party/abseil-cpp/absl/container/hash_container_defaults.h @@ -0,0 +1,45 @@ +// Copyright 2024 The Abseil Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef ABSL_CONTAINER_HASH_CONTAINER_DEFAULTS_H_ +#define ABSL_CONTAINER_HASH_CONTAINER_DEFAULTS_H_ + +#include "absl/base/config.h" +#include "absl/container/internal/hash_function_defaults.h" + +namespace absl { +ABSL_NAMESPACE_BEGIN + +// DefaultHashContainerHash is a convenience alias for the functor that is used +// by default by Abseil hash-based (unordered) containers for hashing when +// `Hash` type argument is not explicitly specified. +// +// This type alias can be used by generic code that wants to provide more +// flexibility for defining underlying containers. +template +using DefaultHashContainerHash = absl::container_internal::hash_default_hash; + +// DefaultHashContainerEq is a convenience alias for the functor that is used by +// default by Abseil hash-based (unordered) containers for equality check when +// `Eq` type argument is not explicitly specified. +// +// This type alias can be used by generic code that wants to provide more +// flexibility for defining underlying containers. +template +using DefaultHashContainerEq = absl::container_internal::hash_default_eq; + +ABSL_NAMESPACE_END +} // namespace absl + +#endif // ABSL_CONTAINER_HASH_CONTAINER_DEFAULTS_H_ diff --git a/third_party/abseil-cpp/absl/container/node_hash_map.h b/third_party/abseil-cpp/absl/container/node_hash_map.h index cb41543c..31beb1da 100644 --- a/third_party/abseil-cpp/absl/container/node_hash_map.h +++ b/third_party/abseil-cpp/absl/container/node_hash_map.h @@ -37,14 +37,13 @@ #define ABSL_CONTAINER_NODE_HASH_MAP_H_ #include -#include +#include #include #include #include "absl/algorithm/container.h" -#include "absl/base/macros.h" +#include "absl/container/hash_container_defaults.h" #include "absl/container/internal/container_memory.h" -#include "absl/container/internal/hash_function_defaults.h" // IWYU pragma: export #include "absl/container/internal/node_slot_policy.h" #include "absl/container/internal/raw_hash_map.h" // IWYU pragma: export #include "absl/memory/memory.h" @@ -114,9 +113,8 @@ class NodeHashMapPolicy; // if (result != ducks.end()) { // std::cout << "Result: " << result->second << std::endl; // } -template , - class Eq = absl::container_internal::hash_default_eq, +template , + class Eq = DefaultHashContainerEq, class Alloc = std::allocator>> class node_hash_map : public absl::container_internal::raw_hash_map< diff --git a/third_party/abseil-cpp/absl/container/node_hash_set.h b/third_party/abseil-cpp/absl/container/node_hash_set.h index 8cc4b624..deeb49ce 100644 --- a/third_party/abseil-cpp/absl/container/node_hash_set.h +++ b/third_party/abseil-cpp/absl/container/node_hash_set.h @@ -36,12 +36,12 @@ #define ABSL_CONTAINER_NODE_HASH_SET_H_ #include +#include #include #include "absl/algorithm/container.h" -#include "absl/base/macros.h" +#include "absl/container/hash_container_defaults.h" #include "absl/container/internal/container_memory.h" -#include "absl/container/internal/hash_function_defaults.h" // IWYU pragma: export #include "absl/container/internal/node_slot_policy.h" #include "absl/container/internal/raw_hash_set.h" // IWYU pragma: export #include "absl/memory/memory.h" @@ -109,9 +109,8 @@ struct NodeHashSetPolicy; // if (ducks.contains("dewey")) { // std::cout << "We found dewey!" << std::endl; // } -template , - class Eq = absl::container_internal::hash_default_eq, - class Alloc = std::allocator> +template , + class Eq = DefaultHashContainerEq, class Alloc = std::allocator> class node_hash_set : public absl::container_internal::raw_hash_set< absl::container_internal::NodeHashSetPolicy, Hash, Eq, Alloc> { diff --git a/third_party/abseil-cpp/absl/functional/any_invocable.h b/third_party/abseil-cpp/absl/functional/any_invocable.h index 68d88253..176077ae 100644 --- a/third_party/abseil-cpp/absl/functional/any_invocable.h +++ b/third_party/abseil-cpp/absl/functional/any_invocable.h @@ -98,9 +98,9 @@ ABSL_NAMESPACE_BEGIN // `AnyInvocable` also properly respects `const` qualifiers, reference // qualifiers, and the `noexcept` specification (only in C++ 17 and beyond) as // part of the user-specified function type (e.g. -// `AnyInvocable`). These qualifiers will be applied to -// the `AnyInvocable` object's `operator()`, and the underlying invocable must -// be compatible with those qualifiers. +// `AnyInvocable`). These qualifiers will be applied +// to the `AnyInvocable` object's `operator()`, and the underlying invocable +// must be compatible with those qualifiers. // // Comparison of const and non-const function types: // diff --git a/third_party/abseil-cpp/absl/functional/overload.h b/third_party/abseil-cpp/absl/functional/overload.h index 732795fc..34ffa689 100644 --- a/third_party/abseil-cpp/absl/functional/overload.h +++ b/third_party/abseil-cpp/absl/functional/overload.h @@ -16,33 +16,26 @@ // File: overload.h // ----------------------------------------------------------------------------- // -// `absl::Overload()` returns a functor that provides overloads based on the -// functors passed to it. +// `absl::Overload` is a functor that provides overloads based on the functors +// with which it is created. This can, for example, be used to locally define an +// anonymous visitor type for `std::visit` inside a function using lambdas. +// // Before using this function, consider whether named function overloads would // be a better design. -// One use case for this is locally defining visitors for `std::visit` inside a -// function using lambdas. - -// Example: Using `absl::Overload` to define a visitor for `std::variant`. -// -// std::variant v(int{1}); // -// assert(std::visit(absl::Overload( -// [](int) -> absl::string_view { return "int"; }, -// [](const std::string&) -> absl::string_view { -// return "string"; -// }, -// [](double) -> absl::string_view { return "double"; }), -// v) == "int"); +// Note: absl::Overload requires C++17. // -// One of the lambda may specify overload for several types via generic lambda. +// Example: // -// absl::variant v(int32_t{1}); -// assert(std::visit(absl::Overload( -// [](const std::string& s) { return s.size(); }, -// [](const auto& s) { return sizeof(s); }), v) == 4); +// std::variant v(int32_t{1}); +// const size_t result = +// std::visit(absl::Overload{ +// [](const std::string& s) { return s.size(); }, +// [](const auto& s) { return sizeof(s); }, +// }, +// v); +// assert(result == 4); // -// Note: absl::Overload requires C++17. #ifndef ABSL_FUNCTIONAL_OVERLOAD_H_ #define ABSL_FUNCTIONAL_OVERLOAD_H_ @@ -56,14 +49,30 @@ ABSL_NAMESPACE_BEGIN #if defined(ABSL_INTERNAL_CPLUSPLUS_LANG) && \ ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L -template -auto Overload(T&&... ts) { - struct OverloadImpl : absl::remove_cvref_t... { - using absl::remove_cvref_t::operator()...; - }; - return OverloadImpl{std::forward(ts)...}; -} +template +struct Overload final : T... { + using T::operator()...; + + // For historical reasons we want to support use that looks like a function + // call: + // + // absl::Overload(lambda_1, lambda_2) + // + // This works automatically in C++20 because we have support for parenthesized + // aggregate initialization. Before then we must provide a constructor that + // makes this work. + // + explicit Overload(T... ts) : T(std::move(ts))... {} +}; + +// Before C++20, which added support for CTAD for aggregate types, we must also +// teach the compiler how to deduce the template arguments for Overload. +// +template +Overload(T...) -> Overload; + #else + namespace functional_internal { template constexpr bool kDependentFalse = false; @@ -76,6 +85,7 @@ auto Overload(T&&...) { } #endif + ABSL_NAMESPACE_END } // namespace absl diff --git a/third_party/abseil-cpp/absl/functional/overload_test.cc b/third_party/abseil-cpp/absl/functional/overload_test.cc index 040bf83f..a2e87674 100644 --- a/third_party/abseil-cpp/absl/functional/overload_test.cc +++ b/third_party/abseil-cpp/absl/functional/overload_test.cc @@ -31,14 +31,15 @@ namespace { TEST(OverloadTest, DispatchConsidersTypeWithAutoFallback) { - auto overloaded = absl::Overload( - [](int v) -> std::string { return absl::StrCat("int ", v); }, // - [](double v) -> std::string { return absl::StrCat("double ", v); }, // - [](const char* v) -> std::string { // - return absl::StrCat("const char* ", v); // - }, // - [](auto v) -> std::string { return absl::StrCat("auto ", v); } // - ); + auto overloaded = absl::Overload{ + [](int v) -> std::string { return absl::StrCat("int ", v); }, + [](double v) -> std::string { return absl::StrCat("double ", v); }, + [](const char* v) -> std::string { + return absl::StrCat("const char* ", v); + }, + [](auto v) -> std::string { return absl::StrCat("auto ", v); }, + }; + EXPECT_EQ("int 1", overloaded(1)); EXPECT_EQ("double 2.5", overloaded(2.5)); EXPECT_EQ("const char* hello", overloaded("hello")); @@ -46,32 +47,34 @@ TEST(OverloadTest, DispatchConsidersTypeWithAutoFallback) { } TEST(OverloadTest, DispatchConsidersNumberOfArguments) { - auto overloaded = absl::Overload( // - [](int a) { return a + 1; }, // - [](int a, int b) { return a * b; }, // - []() -> absl::string_view { return "none"; } // - ); + auto overloaded = absl::Overload{ + [](int a) { return a + 1; }, + [](int a, int b) { return a * b; }, + []() -> absl::string_view { return "none"; }, + }; + EXPECT_EQ(3, overloaded(2)); EXPECT_EQ(21, overloaded(3, 7)); EXPECT_EQ("none", overloaded()); } TEST(OverloadTest, SupportsConstantEvaluation) { - auto overloaded = absl::Overload( // - [](int a) { return a + 1; }, // - [](int a, int b) { return a * b; }, // - []() -> absl::string_view { return "none"; } // - ); + auto overloaded = absl::Overload{ + [](int a) { return a + 1; }, + [](int a, int b) { return a * b; }, + []() -> absl::string_view { return "none"; }, + }; + static_assert(overloaded() == "none"); static_assert(overloaded(2) == 3); static_assert(overloaded(3, 7) == 21); } TEST(OverloadTest, PropogatesDefaults) { - auto overloaded = absl::Overload( // - [](int a, int b = 5) { return a * b; }, // - [](double c) { return c; } // - ); + auto overloaded = absl::Overload{ + [](int a, int b = 5) { return a * b; }, + [](double c) { return c; }, + }; EXPECT_EQ(21, overloaded(3, 7)); EXPECT_EQ(35, overloaded(7)); @@ -79,53 +82,59 @@ TEST(OverloadTest, PropogatesDefaults) { } TEST(OverloadTest, AmbiguousWithDefaultsNotInvocable) { - auto overloaded = absl::Overload( // - [](int a, int b = 5) { return a * b; }, // - [](int c) { return c; } // - ); + auto overloaded = absl::Overload{ + [](int a, int b = 5) { return a * b; }, + [](int c) { return c; }, + }; + static_assert(!std::is_invocable_v); static_assert(std::is_invocable_v); } TEST(OverloadTest, AmbiguousDuplicatesNotInvocable) { - auto overloaded = absl::Overload( // - [](int a) { return a; }, // - [](int c) { return c; } // - ); + auto overloaded = absl::Overload{ + [](int a) { return a; }, + [](int c) { return c; }, + }; + static_assert(!std::is_invocable_v); } TEST(OverloadTest, AmbiguousConversionNotInvocable) { - auto overloaded = absl::Overload( // - [](uint16_t a) { return a; }, // - [](uint64_t c) { return c; } // - ); + auto overloaded = absl::Overload{ + [](uint16_t a) { return a; }, + [](uint64_t c) { return c; }, + }; + static_assert(!std::is_invocable_v); } TEST(OverloadTest, AmbiguousConversionWithAutoNotInvocable) { - auto overloaded = absl::Overload( // - [](auto a) { return a; }, // - [](auto c) { return c; } // - ); + auto overloaded = absl::Overload{ + [](auto a) { return a; }, + [](auto c) { return c; }, + }; + static_assert(!std::is_invocable_v); } #if ABSL_INTERNAL_CPLUSPLUS_LANG >= 202002L TEST(OverloadTest, AmbiguousConversionWithAutoAndTemplateNotInvocable) { - auto overloaded = absl::Overload( // - [](auto a) { return a; }, // - [](T c) { return c; } // - ); + auto overloaded = absl::Overload{ + [](auto a) { return a; }, + [](T c) { return c; }, + }; + static_assert(!std::is_invocable_v); } TEST(OverloadTest, DispatchConsidersTypeWithTemplateFallback) { - auto overloaded = absl::Overload( // - [](int a) { return a; }, // - [](T c) { return c * 2; } // - ); + auto overloaded = absl::Overload{ + [](int a) { return a; }, + [](T c) { return c * 2; }, + }; + EXPECT_EQ(7, overloaded(7)); EXPECT_EQ(14.0, overloaded(7.0)); } @@ -133,20 +142,22 @@ TEST(OverloadTest, DispatchConsidersTypeWithTemplateFallback) { #endif // ABSL_INTERNAL_CPLUSPLUS_LANG >= 202002L TEST(OverloadTest, DispatchConsidersSfinae) { - auto overloaded = absl::Overload( // - [](auto a) -> decltype(a + 1) { return a + 1; } // - ); + auto overloaded = absl::Overload{ + [](auto a) -> decltype(a + 1) { return a + 1; }, + }; + static_assert(std::is_invocable_v); static_assert(!std::is_invocable_v); } TEST(OverloadTest, VariantVisitDispatchesCorrectly) { absl::variant v(1); - auto overloaded = absl::Overload( - [](int) -> absl::string_view { return "int"; }, // - [](double) -> absl::string_view { return "double"; }, // - [](const std::string&) -> absl::string_view { return "string"; } // - ); + auto overloaded = absl::Overload{ + [](int) -> absl::string_view { return "int"; }, + [](double) -> absl::string_view { return "double"; }, + [](const std::string&) -> absl::string_view { return "string"; }, + }; + EXPECT_EQ("int", absl::visit(overloaded, v)); v = 1.1; EXPECT_EQ("double", absl::visit(overloaded, v)); @@ -156,10 +167,11 @@ TEST(OverloadTest, VariantVisitDispatchesCorrectly) { TEST(OverloadTest, VariantVisitWithAutoFallbackDispatchesCorrectly) { absl::variant v(int32_t{1}); - auto overloaded = absl::Overload( - [](const std::string& s) { return s.size(); }, // - [](const auto& s) { return sizeof(s); } // - ); + auto overloaded = absl::Overload{ + [](const std::string& s) { return s.size(); }, + [](const auto& s) { return sizeof(s); }, + }; + EXPECT_EQ(4, absl::visit(overloaded, v)); v = int64_t{1}; EXPECT_EQ(8, absl::visit(overloaded, v)); @@ -167,6 +179,23 @@ TEST(OverloadTest, VariantVisitWithAutoFallbackDispatchesCorrectly) { EXPECT_EQ(5, absl::visit(overloaded, v)); } +// This API used to be exported as a function, so it should also work fine to +// use parantheses when initializing it. +TEST(OverloadTest, UseWithParentheses) { + const auto overloaded = + absl::Overload([](const std::string& s) { return s.size(); }, + [](const auto& s) { return sizeof(s); }); + + absl::variant v(int32_t{1}); + EXPECT_EQ(4, absl::visit(overloaded, v)); + + v = int64_t{1}; + EXPECT_EQ(8, absl::visit(overloaded, v)); + + v = std::string("hello"); + EXPECT_EQ(5, absl::visit(overloaded, v)); +} + } // namespace #endif diff --git a/third_party/abseil-cpp/absl/random/distributions.h b/third_party/abseil-cpp/absl/random/distributions.h index 16b76eea..d62f7f3b 100644 --- a/third_party/abseil-cpp/absl/random/distributions.h +++ b/third_party/abseil-cpp/absl/random/distributions.h @@ -32,8 +32,8 @@ // continuously and independently at a constant average rate // * `absl::Gaussian` (also known as "normal distributions") for continuous // distributions using an associated quadratic function -// * `absl::LogUniform` for continuous uniform distributions where the log -// to the given base of all values is uniform +// * `absl::LogUniform` for discrete distributions where the log to the given +// base of all values is uniform // * `absl::Poisson` for discrete probability distributions that express the // probability of a given number of events occurring within a fixed interval // * `absl::Zipf` for discrete probability distributions commonly used for diff --git a/third_party/abseil-cpp/absl/status/BUILD.bazel b/third_party/abseil-cpp/absl/status/BUILD.bazel index 981b37fd..810a3dda 100644 --- a/third_party/abseil-cpp/absl/status/BUILD.bazel +++ b/third_party/abseil-cpp/absl/status/BUILD.bazel @@ -129,3 +129,38 @@ cc_test( "@com_google_googletest//:gtest_main", ], ) + +cc_library( + name = "status_matchers", + testonly = 1, + srcs = [ + "internal/status_matchers.cc", + "internal/status_matchers.h", + ], + hdrs = ["status_matchers.h"], + copts = ABSL_DEFAULT_COPTS, + linkopts = ABSL_DEFAULT_LINKOPTS, + deps = [ + ":status", + ":statusor", + "//absl/base:config", + "//absl/strings:string_view", + "@com_google_googletest//:gtest", + ], +) + +cc_test( + name = "status_matchers_test", + size = "small", + srcs = ["status_matchers_test.cc"], + copts = ABSL_TEST_COPTS, + linkopts = ABSL_DEFAULT_LINKOPTS, + deps = [ + ":status", + ":status_matchers", + ":statusor", + "//absl/strings", + "@com_google_googletest//:gtest", + "@com_google_googletest//:gtest_main", + ], +) diff --git a/third_party/abseil-cpp/absl/status/CMakeLists.txt b/third_party/abseil-cpp/absl/status/CMakeLists.txt index 00415ab9..d9f04695 100644 --- a/third_party/abseil-cpp/absl/status/CMakeLists.txt +++ b/third_party/abseil-cpp/absl/status/CMakeLists.txt @@ -102,3 +102,40 @@ absl_cc_test( absl::strings GTest::gmock_main ) + +absl_cc_library( + NAME + status_matchers + HDRS + "status_matchers.h" + SRCS + "internal/status_matchers.h" + "internal/status_matchers.cc" + COPTS + ${ABSL_DEFAULT_COPTS} + LINKOPTS + ${ABSL_DEFAULT_LINKOPTS} + DEPS + absl::base + absl::status + absl::statusor + absl::strings + GTest::gmock + GTest::gtest + PUBLIC + TESTONLY +) + +absl_cc_test( + NAME + status_matchers_test + SRCS + "status_matchers_test.cc" + COPTS + ${ABSL_TEST_COPTS} + DEPS + absl::status + absl::statusor + absl::status_matchers + GTest::gmock_main +) diff --git a/third_party/abseil-cpp/absl/status/internal/status_matchers.cc b/third_party/abseil-cpp/absl/status/internal/status_matchers.cc new file mode 100644 index 00000000..908b70bb --- /dev/null +++ b/third_party/abseil-cpp/absl/status/internal/status_matchers.cc @@ -0,0 +1,68 @@ +// Copyright 2024 The Abseil Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ----------------------------------------------------------------------------- +// File: status_matchers.cc +// ----------------------------------------------------------------------------- + +#include "absl/status/internal/status_matchers.h" + +#include +#include + +#include "gmock/gmock.h" // gmock_for_status_matchers.h +#include "absl/base/config.h" +#include "absl/status/status.h" + +namespace absl_testing { +ABSL_NAMESPACE_BEGIN +namespace status_internal { + +void StatusIsMatcherCommonImpl::DescribeTo(std::ostream* os) const { + *os << ", has a status code that "; + code_matcher_.DescribeTo(os); + *os << ", and has an error message that "; + message_matcher_.DescribeTo(os); +} + +void StatusIsMatcherCommonImpl::DescribeNegationTo(std::ostream* os) const { + *os << ", or has a status code that "; + code_matcher_.DescribeNegationTo(os); + *os << ", or has an error message that "; + message_matcher_.DescribeNegationTo(os); +} + +bool StatusIsMatcherCommonImpl::MatchAndExplain( + const ::absl::Status& status, + ::testing::MatchResultListener* result_listener) const { + ::testing::StringMatchResultListener inner_listener; + if (!code_matcher_.MatchAndExplain(status.code(), &inner_listener)) { + *result_listener << (inner_listener.str().empty() + ? "whose status code is wrong" + : "which has a status code " + + inner_listener.str()); + return false; + } + + if (!message_matcher_.Matches(std::string(status.message()))) { + *result_listener << "whose error message is wrong"; + return false; + } + + return true; +} + +} // namespace status_internal +ABSL_NAMESPACE_END +} // namespace absl_testing diff --git a/third_party/abseil-cpp/absl/status/internal/status_matchers.h b/third_party/abseil-cpp/absl/status/internal/status_matchers.h new file mode 100644 index 00000000..d11742b7 --- /dev/null +++ b/third_party/abseil-cpp/absl/status/internal/status_matchers.h @@ -0,0 +1,246 @@ +// Copyright 2024 The Abseil Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef ABSL_STATUS_INTERNAL_STATUS_MATCHERS_H_ +#define ABSL_STATUS_INTERNAL_STATUS_MATCHERS_H_ + +#include // NOLINT +#include +#include +#include + +#include "gmock/gmock.h" // gmock_for_status_matchers.h +#include "absl/base/config.h" +#include "absl/status/status.h" +#include "absl/status/statusor.h" +#include "absl/strings/string_view.h" + +namespace absl_testing { +ABSL_NAMESPACE_BEGIN +namespace status_internal { + +inline const absl::Status& GetStatus(const absl::Status& status) { + return status; +} + +template +inline const absl::Status& GetStatus(const absl::StatusOr& status) { + return status.status(); +} + +//////////////////////////////////////////////////////////// +// Implementation of IsOkAndHolds(). + +// Monomorphic implementation of matcher IsOkAndHolds(m). StatusOrType is a +// reference to StatusOr. +template +class IsOkAndHoldsMatcherImpl + : public ::testing::MatcherInterface { + public: + typedef + typename std::remove_reference::type::value_type value_type; + + template + explicit IsOkAndHoldsMatcherImpl(InnerMatcher&& inner_matcher) + : inner_matcher_(::testing::SafeMatcherCast( + std::forward(inner_matcher))) {} + + void DescribeTo(std::ostream* os) const override { + *os << "is OK and has a value that "; + inner_matcher_.DescribeTo(os); + } + + void DescribeNegationTo(std::ostream* os) const override { + *os << "isn't OK or has a value that "; + inner_matcher_.DescribeNegationTo(os); + } + + bool MatchAndExplain( + StatusOrType actual_value, + ::testing::MatchResultListener* result_listener) const override { + if (!actual_value.ok()) { + *result_listener << "which has status " << actual_value.status(); + return false; + } + + // Call through to the inner matcher. + return inner_matcher_.MatchAndExplain(*actual_value, result_listener); + } + + private: + const ::testing::Matcher inner_matcher_; +}; + +// Implements IsOkAndHolds(m) as a polymorphic matcher. +template +class IsOkAndHoldsMatcher { + public: + explicit IsOkAndHoldsMatcher(InnerMatcher inner_matcher) + : inner_matcher_(std::forward(inner_matcher)) {} + + // Converts this polymorphic matcher to a monomorphic matcher of the + // given type. StatusOrType can be either StatusOr or a + // reference to StatusOr. + template + operator ::testing::Matcher() const { // NOLINT + return ::testing::Matcher( + new IsOkAndHoldsMatcherImpl(inner_matcher_)); + } + + private: + const InnerMatcher inner_matcher_; +}; + +//////////////////////////////////////////////////////////// +// Implementation of StatusIs(). + +// `StatusCode` is implicitly convertible from `int`, `absl::StatusCode`, and +// is explicitly convertible to these types as well. +// +// We need this class because `absl::StatusCode` (as a scoped enum) is not +// implicitly convertible to `int`. In order to handle use cases like +// ``` +// StatusIs(Anyof(absl::StatusCode::kUnknown, absl::StatusCode::kCancelled)) +// ``` +// which uses polymorphic matchers, we need to unify the interfaces into +// `Matcher`. +class StatusCode { + public: + /*implicit*/ StatusCode(int code) // NOLINT + : code_(static_cast<::absl::StatusCode>(code)) {} + /*implicit*/ StatusCode(::absl::StatusCode code) : code_(code) {} // NOLINT + + explicit operator int() const { return static_cast(code_); } + + friend inline void PrintTo(const StatusCode& code, std::ostream* os) { + // TODO(b/321095377): Change this to print the status code as a string. + *os << static_cast(code); + } + + private: + ::absl::StatusCode code_; +}; + +// Relational operators to handle matchers like Eq, Lt, etc.. +inline bool operator==(const StatusCode& lhs, const StatusCode& rhs) { + return static_cast(lhs) == static_cast(rhs); +} +inline bool operator!=(const StatusCode& lhs, const StatusCode& rhs) { + return static_cast(lhs) != static_cast(rhs); +} + +// StatusIs() is a polymorphic matcher. This class is the common +// implementation of it shared by all types T where StatusIs() can be +// used as a Matcher. +class StatusIsMatcherCommonImpl { + public: + StatusIsMatcherCommonImpl( + ::testing::Matcher code_matcher, + ::testing::Matcher message_matcher) + : code_matcher_(std::move(code_matcher)), + message_matcher_(std::move(message_matcher)) {} + + void DescribeTo(std::ostream* os) const; + + void DescribeNegationTo(std::ostream* os) const; + + bool MatchAndExplain(const absl::Status& status, + ::testing::MatchResultListener* result_listener) const; + + private: + const ::testing::Matcher code_matcher_; + const ::testing::Matcher message_matcher_; +}; + +// Monomorphic implementation of matcher StatusIs() for a given type +// T. T can be Status, StatusOr<>, or a reference to either of them. +template +class MonoStatusIsMatcherImpl : public ::testing::MatcherInterface { + public: + explicit MonoStatusIsMatcherImpl(StatusIsMatcherCommonImpl common_impl) + : common_impl_(std::move(common_impl)) {} + + void DescribeTo(std::ostream* os) const override { + common_impl_.DescribeTo(os); + } + + void DescribeNegationTo(std::ostream* os) const override { + common_impl_.DescribeNegationTo(os); + } + + bool MatchAndExplain( + T actual_value, + ::testing::MatchResultListener* result_listener) const override { + return common_impl_.MatchAndExplain(GetStatus(actual_value), + result_listener); + } + + private: + StatusIsMatcherCommonImpl common_impl_; +}; + +// Implements StatusIs() as a polymorphic matcher. +class StatusIsMatcher { + public: + template + StatusIsMatcher(StatusCodeMatcher&& code_matcher, + StatusMessageMatcher&& message_matcher) + : common_impl_(::testing::MatcherCast( + std::forward(code_matcher)), + ::testing::MatcherCast( + std::forward(message_matcher))) { + } + + // Converts this polymorphic matcher to a monomorphic matcher of the + // given type. T can be StatusOr<>, Status, or a reference to + // either of them. + template + /*implicit*/ operator ::testing::Matcher() const { // NOLINT + return ::testing::Matcher( + new MonoStatusIsMatcherImpl(common_impl_)); + } + + private: + const StatusIsMatcherCommonImpl common_impl_; +}; + +// Monomorphic implementation of matcher IsOk() for a given type T. +// T can be Status, StatusOr<>, or a reference to either of them. +template +class MonoIsOkMatcherImpl : public ::testing::MatcherInterface { + public: + void DescribeTo(std::ostream* os) const override { *os << "is OK"; } + void DescribeNegationTo(std::ostream* os) const override { + *os << "is not OK"; + } + bool MatchAndExplain(T actual_value, + ::testing::MatchResultListener*) const override { + return GetStatus(actual_value).ok(); + } +}; + +// Implements IsOk() as a polymorphic matcher. +class IsOkMatcher { + public: + template + /*implicit*/ operator ::testing::Matcher() const { // NOLINT + return ::testing::Matcher(new MonoIsOkMatcherImpl()); + } +}; + +} // namespace status_internal +ABSL_NAMESPACE_END +} // namespace absl_testing + +#endif // ABSL_STATUS_INTERNAL_STATUS_MATCHERS_H_ diff --git a/third_party/abseil-cpp/absl/status/status_matchers.h b/third_party/abseil-cpp/absl/status/status_matchers.h new file mode 100644 index 00000000..837660eb --- /dev/null +++ b/third_party/abseil-cpp/absl/status/status_matchers.h @@ -0,0 +1,118 @@ +// Copyright 2024 The Abseil Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ----------------------------------------------------------------------------- +// File: status_matchers.h +// ----------------------------------------------------------------------------- +// +// Testing utilities for working with `absl::Status` and `absl::StatusOr`. +// +// Defines the following utilities: +// +// =============== +// `IsOkAndHolds(m)` +// =============== +// +// This gMock matcher matches a StatusOr value whose status is OK +// and whose inner value matches matcher m. Example: +// +// ``` +// using ::testing::MatchesRegex; +// using ::absl_testing::IsOkAndHolds; +// ... +// absl::StatusOr maybe_name = ...; +// EXPECT_THAT(maybe_name, IsOkAndHolds(MatchesRegex("John .*"))); +// ``` +// +// =============================== +// `StatusIs(status_code_matcher)` +// =============================== +// +// This is a shorthand for +// `StatusIs(status_code_matcher, ::testing::_)` +// In other words, it's like the two-argument `StatusIs()`, except that it +// ignores error message. +// +// =============== +// `IsOk()` +// =============== +// +// Matches an `absl::Status` or `absl::StatusOr` value whose status value +// is `absl::StatusCode::kOk.` +// +// Equivalent to 'StatusIs(absl::StatusCode::kOk)'. +// Example: +// ``` +// using ::absl_testing::IsOk; +// ... +// absl::StatusOr maybe_name = ...; +// EXPECT_THAT(maybe_name, IsOk()); +// Status s = ...; +// EXPECT_THAT(s, IsOk()); +// ``` + +#ifndef ABSL_STATUS_STATUS_MATCHERS_H_ +#define ABSL_STATUS_STATUS_MATCHERS_H_ + +#include // NOLINT +#include +#include + +#include "gmock/gmock.h" // gmock_for_status_matchers.h +#include "absl/base/config.h" +#include "absl/status/internal/status_matchers.h" + +namespace absl_testing { +ABSL_NAMESPACE_BEGIN + +// Returns a gMock matcher that matches a StatusOr<> whose status is +// OK and whose value matches the inner matcher. +template +status_internal::IsOkAndHoldsMatcher::type> +IsOkAndHolds(InnerMatcherT&& inner_matcher) { + return status_internal::IsOkAndHoldsMatcher< + typename std::decay::type>( + std::forward(inner_matcher)); +} + +// Returns a gMock matcher that matches a Status or StatusOr<> whose status code +// matches code_matcher and whose error message matches message_matcher. +// Typically, code_matcher will be an absl::StatusCode, e.g. +// +// StatusIs(absl::StatusCode::kInvalidArgument, "...") +template +status_internal::StatusIsMatcher StatusIs( + StatusCodeMatcherT&& code_matcher, + StatusMessageMatcherT&& message_matcher) { + return status_internal::StatusIsMatcher( + std::forward(code_matcher), + std::forward(message_matcher)); +} + +// Returns a gMock matcher that matches a Status or StatusOr<> and whose status +// code matches code_matcher. See above for details. +template +status_internal::StatusIsMatcher StatusIs(StatusCodeMatcherT&& code_matcher) { + return StatusIs(std::forward(code_matcher), ::testing::_); +} + +// Returns a gMock matcher that matches a Status or StatusOr<> which is OK. +inline status_internal::IsOkMatcher IsOk() { + return status_internal::IsOkMatcher(); +} + +ABSL_NAMESPACE_END +} // namespace absl_testing + +#endif // ABSL_STATUS_STATUS_MATCHERS_H_ diff --git a/third_party/abseil-cpp/absl/status/status_matchers_test.cc b/third_party/abseil-cpp/absl/status/status_matchers_test.cc new file mode 100644 index 00000000..3af03053 --- /dev/null +++ b/third_party/abseil-cpp/absl/status/status_matchers_test.cc @@ -0,0 +1,119 @@ +// Copyright 2024 The Abseil Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// ----------------------------------------------------------------------------- +// File: status_matchers_test.cc +// ----------------------------------------------------------------------------- +#include "absl/status/status_matchers.h" + +#include "gmock/gmock.h" +#include "gtest/gtest-spi.h" +#include "gtest/gtest.h" +#include "absl/status/status.h" +#include "absl/status/statusor.h" +#include "absl/strings/string_view.h" + +namespace { + +using ::absl_testing::IsOk; +using ::absl_testing::IsOkAndHolds; +using ::absl_testing::StatusIs; +using ::testing::Gt; + +TEST(StatusMatcherTest, StatusIsOk) { EXPECT_THAT(absl::OkStatus(), IsOk()); } + +TEST(StatusMatcherTest, StatusOrIsOk) { + absl::StatusOr ok_int = {0}; + EXPECT_THAT(ok_int, IsOk()); +} + +TEST(StatusMatcherTest, StatusIsNotOk) { + absl::Status error = absl::UnknownError("Smigla"); + EXPECT_NONFATAL_FAILURE(EXPECT_THAT(error, IsOk()), "Smigla"); +} + +TEST(StatusMatcherTest, StatusOrIsNotOk) { + absl::StatusOr error = absl::UnknownError("Smigla"); + EXPECT_NONFATAL_FAILURE(EXPECT_THAT(error, IsOk()), "Smigla"); +} + +TEST(StatusMatcherTest, IsOkAndHolds) { + absl::StatusOr ok_int = {4}; + absl::StatusOr ok_str = {"text"}; + EXPECT_THAT(ok_int, IsOkAndHolds(4)); + EXPECT_THAT(ok_int, IsOkAndHolds(Gt(0))); + EXPECT_THAT(ok_str, IsOkAndHolds("text")); +} + +TEST(StatusMatcherTest, IsOkAndHoldsFailure) { + absl::StatusOr ok_int = {502}; + absl::StatusOr error = absl::UnknownError("Smigla"); + absl::StatusOr ok_str = {"actual"}; + EXPECT_NONFATAL_FAILURE(EXPECT_THAT(ok_int, IsOkAndHolds(0)), "502"); + EXPECT_NONFATAL_FAILURE(EXPECT_THAT(error, IsOkAndHolds(0)), "Smigla"); + EXPECT_NONFATAL_FAILURE(EXPECT_THAT(ok_str, IsOkAndHolds("expected")), + "actual"); +} + +TEST(StatusMatcherTest, StatusIs) { + absl::Status unknown = absl::UnknownError("unbekannt"); + absl::Status invalid = absl::InvalidArgumentError("ungueltig"); + EXPECT_THAT(absl::OkStatus(), StatusIs(absl::StatusCode::kOk)); + EXPECT_THAT(absl::OkStatus(), StatusIs(0)); + EXPECT_THAT(unknown, StatusIs(absl::StatusCode::kUnknown)); + EXPECT_THAT(unknown, StatusIs(2)); + EXPECT_THAT(unknown, StatusIs(absl::StatusCode::kUnknown, "unbekannt")); + EXPECT_THAT(invalid, StatusIs(absl::StatusCode::kInvalidArgument)); + EXPECT_THAT(invalid, StatusIs(3)); + EXPECT_THAT(invalid, + StatusIs(absl::StatusCode::kInvalidArgument, "ungueltig")); +} + +TEST(StatusMatcherTest, StatusOrIs) { + absl::StatusOr ok = {42}; + absl::StatusOr unknown = absl::UnknownError("unbekannt"); + absl::StatusOr invalid = + absl::InvalidArgumentError("ungueltig"); + EXPECT_THAT(ok, StatusIs(absl::StatusCode::kOk)); + EXPECT_THAT(ok, StatusIs(0)); + EXPECT_THAT(unknown, StatusIs(absl::StatusCode::kUnknown)); + EXPECT_THAT(unknown, StatusIs(2)); + EXPECT_THAT(unknown, StatusIs(absl::StatusCode::kUnknown, "unbekannt")); + EXPECT_THAT(invalid, StatusIs(absl::StatusCode::kInvalidArgument)); + EXPECT_THAT(invalid, StatusIs(3)); + EXPECT_THAT(invalid, + StatusIs(absl::StatusCode::kInvalidArgument, "ungueltig")); +} + +TEST(StatusMatcherTest, StatusIsFailure) { + absl::Status unknown = absl::UnknownError("unbekannt"); + absl::Status invalid = absl::InvalidArgumentError("ungueltig"); + EXPECT_NONFATAL_FAILURE( + EXPECT_THAT(absl::OkStatus(), + StatusIs(absl::StatusCode::kInvalidArgument)), + "OK"); + EXPECT_NONFATAL_FAILURE( + EXPECT_THAT(unknown, StatusIs(absl::StatusCode::kCancelled)), "UNKNOWN"); + EXPECT_NONFATAL_FAILURE( + EXPECT_THAT(unknown, StatusIs(absl::StatusCode::kUnknown, "inconnu")), + "unbekannt"); + EXPECT_NONFATAL_FAILURE( + EXPECT_THAT(invalid, StatusIs(absl::StatusCode::kOutOfRange)), "INVALID"); + EXPECT_NONFATAL_FAILURE( + EXPECT_THAT(invalid, + StatusIs(absl::StatusCode::kInvalidArgument, "invalide")), + "ungueltig"); +} + +} // namespace diff --git a/third_party/abseil-cpp/absl/strings/BUILD.bazel b/third_party/abseil-cpp/absl/strings/BUILD.bazel index d93a78a9..48793edd 100644 --- a/third_party/abseil-cpp/absl/strings/BUILD.bazel +++ b/third_party/abseil-cpp/absl/strings/BUILD.bazel @@ -917,6 +917,7 @@ cc_test( "//absl/base:config", "//absl/base:core_headers", "//absl/base:endian", + "//absl/base:no_destructor", "//absl/container:fixed_array", "//absl/functional:function_ref", "//absl/hash", diff --git a/third_party/abseil-cpp/absl/strings/CMakeLists.txt b/third_party/abseil-cpp/absl/strings/CMakeLists.txt index 53e85188..99156cfe 100644 --- a/third_party/abseil-cpp/absl/strings/CMakeLists.txt +++ b/third_party/abseil-cpp/absl/strings/CMakeLists.txt @@ -1075,6 +1075,7 @@ absl_cc_test( absl::function_ref absl::hash absl::hash_testing + absl::no_destructor absl::log absl::optional absl::random_random diff --git a/third_party/abseil-cpp/absl/strings/cord.cc b/third_party/abseil-cpp/absl/strings/cord.cc index 025904c1..f0f4f31a 100644 --- a/third_party/abseil-cpp/absl/strings/cord.cc +++ b/third_party/abseil-cpp/absl/strings/cord.cc @@ -75,7 +75,7 @@ using ::absl::cord_internal::kMinFlatLength; using ::absl::cord_internal::kInlinedVectorSize; using ::absl::cord_internal::kMaxBytesToCopy; -static void DumpNode(absl::Nonnull rep, bool include_data, +static void DumpNode(absl::Nonnull nonnull_rep, bool include_data, absl::Nonnull os, int indent = 0); static bool VerifyNode(absl::Nonnull root, absl::Nonnull start_node); @@ -1457,12 +1457,13 @@ absl::string_view Cord::FlattenSlowPath() { } } -static void DumpNode(absl::Nonnull rep, bool include_data, +static void DumpNode(absl::Nonnull nonnull_rep, bool include_data, absl::Nonnull os, int indent) { + CordRep* rep = nonnull_rep; const int kIndentStep = 1; for (;;) { - *os << std::setw(3) << rep->refcount.Get(); - *os << " " << std::setw(7) << rep->length; + *os << std::setw(3) << (rep == nullptr ? 0 : rep->refcount.Get()); + *os << " " << std::setw(7) << (rep == nullptr ? 0 : rep->length); *os << " ["; if (include_data) *os << static_cast(rep); *os << "]"; diff --git a/third_party/abseil-cpp/absl/strings/cord_test.cc b/third_party/abseil-cpp/absl/strings/cord_test.cc index 658ad55b..c4a7288a 100644 --- a/third_party/abseil-cpp/absl/strings/cord_test.cc +++ b/third_party/abseil-cpp/absl/strings/cord_test.cc @@ -38,6 +38,7 @@ #include "absl/base/config.h" #include "absl/base/internal/endian.h" #include "absl/base/macros.h" +#include "absl/base/no_destructor.h" #include "absl/base/options.h" #include "absl/container/fixed_array.h" #include "absl/functional/function_ref.h" @@ -242,12 +243,14 @@ class CordTestPeer { ABSL_NAMESPACE_END } // namespace absl -// The CordTest fixture runs all tests with and without Cord Btree enabled, -// and with our without expected CRCs being set on the subject Cords. -class CordTest : public testing::TestWithParam { + + +// The CordTest fixture runs all tests with and without expected CRCs being set +// on the subject Cords. +class CordTest : public testing::TestWithParam { public: - // Returns true if test is running with btree enabled. - bool UseCrc() const { return GetParam() == 2 || GetParam() == 3; } + // Returns true if test is running with Crc enabled. + bool UseCrc() const { return GetParam(); } void MaybeHarden(absl::Cord& c) { if (UseCrc()) { c.SetExpectedChecksum(1); @@ -259,20 +262,16 @@ class CordTest : public testing::TestWithParam { } // Returns human readable string representation of the test parameter. - static std::string ToString(testing::TestParamInfo param) { - switch (param.param) { - case 0: - return "Btree"; - case 1: - return "BtreeHardened"; - default: - assert(false); - return "???"; + static std::string ToString(testing::TestParamInfo useCrc) { + if (useCrc.param) { + return "BtreeHardened"; + } else { + return "Btree"; } } }; -INSTANTIATE_TEST_SUITE_P(WithParam, CordTest, testing::Values(0, 1), +INSTANTIATE_TEST_SUITE_P(WithParam, CordTest, testing::Bool(), CordTest::ToString); TEST(CordRepFlat, AllFlatCapacities) { @@ -2796,34 +2795,15 @@ class AfterExitCordTester { absl::string_view expected_; }; -// Deliberately prevents the destructor for an absl::Cord from running. The cord -// is accessible via the cord member during the lifetime of the CordLeaker. -// After the CordLeaker is destroyed, pointers to the cord will remain valid -// until the CordLeaker's memory is deallocated. -struct CordLeaker { - union { - absl::Cord cord; - }; - - template - constexpr explicit CordLeaker(const Str& str) : cord(str) {} - - ~CordLeaker() { - // Don't do anything, including running cord's destructor. (cord's - // destructor won't run automatically because cord is hidden inside a - // union.) - } -}; - template -void TestConstinitConstructor(Str) { +void TestAfterExit(Str) { const auto expected = Str::value; // Defined before `cord` to be destroyed after it. static AfterExitCordTester exit_tester; // NOLINT - ABSL_CONST_INIT static CordLeaker cord_leaker(Str{}); // NOLINT + static absl::NoDestructor cord_leaker(Str{}); // cord_leaker is static, so this reference will remain valid through the end // of program execution. - static absl::Cord& cord = cord_leaker.cord; + static absl::Cord& cord = *cord_leaker; static bool init_exit_tester = exit_tester.Set(&cord, expected); (void)init_exit_tester; @@ -2875,11 +2855,9 @@ struct LongView { }; -TEST_P(CordTest, ConstinitConstructor) { - TestConstinitConstructor( - absl::strings_internal::MakeStringConstant(ShortView{})); - TestConstinitConstructor( - absl::strings_internal::MakeStringConstant(LongView{})); +TEST_P(CordTest, AfterExit) { + TestAfterExit(absl::strings_internal::MakeStringConstant(ShortView{})); + TestAfterExit(absl::strings_internal::MakeStringConstant(LongView{})); } namespace { diff --git a/third_party/abseil-cpp/absl/strings/internal/str_format/convert_test.cc b/third_party/abseil-cpp/absl/strings/internal/str_format/convert_test.cc index 3e761373..17c3607d 100644 --- a/third_party/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +++ b/third_party/abseil-cpp/absl/strings/internal/str_format/convert_test.cc @@ -785,8 +785,7 @@ TEST_F(FormatConvertTest, Uint128) { } template -void TestWithMultipleFormatsHelper(const std::vector &floats, - const std::set &skip_verify) { +void TestWithMultipleFormatsHelper(const std::vector &floats) { const NativePrintfTraits &native_traits = VerifyNativeImplementation(); // Reserve the space to ensure we don't allocate memory in the output itself. std::string str_format_result; @@ -834,6 +833,9 @@ void TestWithMultipleFormatsHelper(const std::vector &floats, AppendPack(&str_format_result, format, absl::MakeSpan(args)); } + // For values that we know won't match the standard library + // implementation we skip verification, but still run the algorithm to + // catch asserts/sanitizer bugs. #ifdef _MSC_VER // MSVC has a different rounding policy than us so we can't test our // implementation against the native one there. @@ -842,8 +844,7 @@ void TestWithMultipleFormatsHelper(const std::vector &floats, // Apple formats NaN differently (+nan) vs. (nan) if (std::isnan(d)) continue; #endif - if (string_printf_result != str_format_result && - skip_verify.find(d) == skip_verify.end()) { + if (string_printf_result != str_format_result) { // We use ASSERT_EQ here because failures are usually correlated and a // bug would print way too many failed expectations causing the test // to time out. @@ -904,14 +905,10 @@ TEST_F(FormatConvertTest, Float) { }); floats.erase(std::unique(floats.begin(), floats.end()), floats.end()); - TestWithMultipleFormatsHelper(floats, {}); + TestWithMultipleFormatsHelper(floats); } TEST_F(FormatConvertTest, Double) { - // For values that we know won't match the standard library implementation we - // skip verification, but still run the algorithm to catch asserts/sanitizer - // bugs. - std::set skip_verify; std::vector doubles = {0.0, -0.0, .99999999999999, @@ -959,7 +956,7 @@ TEST_F(FormatConvertTest, Double) { }); doubles.erase(std::unique(doubles.begin(), doubles.end()), doubles.end()); - TestWithMultipleFormatsHelper(doubles, skip_verify); + TestWithMultipleFormatsHelper(doubles); } TEST_F(FormatConvertTest, DoubleRound) { diff --git a/third_party/abseil-cpp/absl/synchronization/mutex.h b/third_party/abseil-cpp/absl/synchronization/mutex.h index 95052252..be3f1f56 100644 --- a/third_party/abseil-cpp/absl/synchronization/mutex.h +++ b/third_party/abseil-cpp/absl/synchronization/mutex.h @@ -190,7 +190,7 @@ class ABSL_LOCKABLE ABSL_ATTRIBUTE_WARN_UNUSED Mutex { // If the mutex can be acquired without blocking, does so exclusively and // returns `true`. Otherwise, returns `false`. Returns `true` with high // probability if the `Mutex` was free. - bool TryLock() ABSL_EXCLUSIVE_TRYLOCK_FUNCTION(true); + ABSL_MUST_USE_RESULT bool TryLock() ABSL_EXCLUSIVE_TRYLOCK_FUNCTION(true); // Mutex::AssertHeld() // @@ -255,7 +255,7 @@ class ABSL_LOCKABLE ABSL_ATTRIBUTE_WARN_UNUSED Mutex { // If the mutex can be acquired without blocking, acquires this mutex for // shared access and returns `true`. Otherwise, returns `false`. Returns // `true` with high probability if the `Mutex` was free or shared. - bool ReaderTryLock() ABSL_SHARED_TRYLOCK_FUNCTION(true); + ABSL_MUST_USE_RESULT bool ReaderTryLock() ABSL_SHARED_TRYLOCK_FUNCTION(true); // Mutex::AssertReaderHeld() // @@ -281,7 +281,8 @@ class ABSL_LOCKABLE ABSL_ATTRIBUTE_WARN_UNUSED Mutex { void WriterUnlock() ABSL_UNLOCK_FUNCTION() { this->Unlock(); } - bool WriterTryLock() ABSL_EXCLUSIVE_TRYLOCK_FUNCTION(true) { + ABSL_MUST_USE_RESULT bool WriterTryLock() + ABSL_EXCLUSIVE_TRYLOCK_FUNCTION(true) { return this->TryLock(); } diff --git a/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc b/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc index d0146122..b5094027 100644 --- a/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +++ b/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#if defined(_WIN32) || defined(_WIN64) +#if !defined(_CRT_SECURE_NO_WARNINGS) && defined(_WIN32) #define _CRT_SECURE_NO_WARNINGS 1 #endif diff --git a/third_party/bazel-skylib/.bazelci/presubmit.yml b/third_party/bazel-skylib/.bazelci/presubmit.yml index 661c84d2..9ccffc2a 100644 --- a/third_party/bazel-skylib/.bazelci/presubmit.yml +++ b/third_party/bazel-skylib/.bazelci/presubmit.yml @@ -1,142 +1,130 @@ --- +matrix: + platform: + - ubuntu1804 + - ubuntu2004 + - macos + +.reusable_build_flags: &reusable_build_flags + ? "--incompatible_config_setting_private_default_visibility" + ? "--incompatible_disallow_empty_glob" + +.reusable_test_flags: &reusable_test_flags + <<: *reusable_build_flags + ? "--test_env=PATH" + +.reusable_targets: &reusable_targets + ? "--" + ? "//..." + ? "@bazel_skylib_gazelle_plugin//..." + .reusable_config: &reusable_config - build_targets: - - "--" - - "//..." - - "@bazel_skylib_gazelle_plugin//..." - test_targets: - - "--" - - "//..." - - "@bazel_skylib_gazelle_plugin//..." + build_flags: *reusable_build_flags + test_flags: *reusable_test_flags + build_targets: *reusable_targets + test_targets: *reusable_targets tasks: - ubuntu1804_latest: + ubuntu2004_bazel5: <<: *reusable_config - name: "Latest Bazel" - platform: ubuntu1804 - bazel: latest - build_flags: - - "--incompatible_config_setting_private_default_visibility" - - "--incompatible_disallow_empty_glob" - test_flags: - - "--test_env=PATH" + name: "Bazel 5.x" + platform: ubuntu2004 + bazel: 5.x - ubuntu1604_latest: - name: "Latest Bazel" - platform: ubuntu1604 - bazel: latest - build_flags: - - "--incompatible_config_setting_private_default_visibility" - - "--incompatible_disallow_empty_glob" + ubuntu2004_bazel6: + <<: *reusable_config + name: "Bazel 6.x" + platform: ubuntu2004 + bazel: 6.x build_targets: - - "--" - - "//..." - - "@bazel_skylib_gazelle_plugin//..." - # //distribution requires Python >= 3.6 for some rules_pkg scripts; Ubuntu 16.04 has Python 3.5 - - "-//distribution/..." - test_flags: - - "--test_env=PATH" + <<: *reusable_targets + # rules_pkg fails with --noenable_bzlmod + ? "-//distribution/..." test_targets: - - "--" - - "//..." - - "@bazel_skylib_gazelle_plugin//..." - # //distribution requires Python >= 3.6 for some rules_pkg scripts; Ubuntu 16.04 has Python 3.5 - - "-//distribution/..." + <<: *reusable_targets + # rules_pkg fails with --noenable_bzlmod + ? "-//distribution/..." - macos_latest: + ubuntu2004_bazel6_enable_bzlmod: <<: *reusable_config - name: "Latest Bazel" - platform: macos - bazel: latest + name: "Bazel 6.x with --enable_bzlmod" + platform: ubuntu2004 + bazel: 6.x build_flags: - - "--incompatible_config_setting_private_default_visibility" - - "--incompatible_disallow_empty_glob" + <<: *reusable_build_flags + ? "--enable_bzlmod" test_flags: - - "--test_env=PATH" + <<: *reusable_test_flags + ? "--enable_bzlmod" - windows_latest: + latest: <<: *reusable_config name: "Latest Bazel" - platform: windows + platform: ${{ platform }} bazel: latest - build_flags: - - "--incompatible_config_setting_private_default_visibility" - - "--incompatible_disallow_empty_glob" - test_flags: - # TODO(laszlocsomor): remove "--test_env=LOCALAPPDATA" after - # https://github.com/bazelbuild/bazel/issues/7761 is fixed - - "--test_env=LOCALAPPDATA" - - "--test_tag_filters=-no_windows" - ubuntu1804_last_green: + ubuntu2004_latest_noenable_bzlmod: <<: *reusable_config - name: "Last Green Bazel" - platform: ubuntu1804 - bazel: last_green + name: "Latest Bazel with --noenable_bzlmod" + platform: ubuntu2004 + bazel: latest build_flags: - - "--incompatible_config_setting_private_default_visibility" - - "--incompatible_disallow_empty_glob" + <<: *reusable_build_flags + ? "--noenable_bzlmod" test_flags: - - "--test_env=PATH" + <<: *reusable_test_flags + ? "--noenable_bzlmod" + build_targets: + <<: *reusable_targets + # rules_pkg fails with --noenable_bzlmod + ? "-//distribution/..." + test_targets: + <<: *reusable_targets + # rules_pkg fails with --noenable_bzlmod + ? "-//distribution/..." - ubuntu1604_last_green: - name: "Last Green Bazel" + ubuntu1604_latest: + <<: *reusable_config + name: "Latest Bazel" platform: ubuntu1604 - bazel: last_green - build_flags: - - "--incompatible_config_setting_private_default_visibility" - - "--incompatible_disallow_empty_glob" + bazel: latest build_targets: - - "--" - - "//..." - - "@bazel_skylib_gazelle_plugin//..." - # //distribution requires Python >= 3.6 for some rules_pkg scripts; Ubuntu 16.04 has Python 3.5 - - "-//distribution/..." - test_flags: - - "--test_env=PATH" + <<: *reusable_targets + # //distribution requires Python >= 3.6 for some rules_pkg scripts; Ubuntu 16.04 has Python 3.5 + ? "-//distribution/..." test_targets: - - "--" - - "//..." - - "@bazel_skylib_gazelle_plugin//..." - # //distribution requires Python >= 3.6 for some rules_pkg scripts; Ubuntu 16.04 has Python 3.5 - - "-//distribution/..." + <<: *reusable_targets + # //distribution requires Python >= 3.6 for some rules_pkg scripts; Ubuntu 16.04 has Python 3.5 + ? "-//distribution/..." - macos_last_green: + windows_latest: <<: *reusable_config - name: "Last Green Bazel" - platform: macos - bazel: last_green - build_flags: - - "--incompatible_config_setting_private_default_visibility" - - "--incompatible_disallow_empty_glob" + name: "Latest Bazel" + platform: windows + bazel: latest test_flags: - - "--test_env=PATH" + <<: *reusable_test_flags + # TODO(laszlocsomor): remove "--test_env=LOCALAPPDATA" after + # https://github.com/bazelbuild/bazel/issues/7761 is fixed + ? "--test_env=LOCALAPPDATA" + ? "--test_tag_filters=-no_windows" - windows_last_green: + last_green: <<: *reusable_config name: "Last Green Bazel" - platform: windows + platform: ${{ platform }} bazel: last_green - build_flags: - - "--incompatible_config_setting_private_default_visibility" - - "--incompatible_disallow_empty_glob" - test_flags: - # TODO(laszlocsomor): remove "--test_env=LOCALAPPDATA" after - # https://github.com/bazelbuild/bazel/issues/7761 is fixed - - "--test_env=LOCALAPPDATA" - - "--test_tag_filters=-no_windows" - ubuntu1804_last_green_bzlmod: + windows_last_green: <<: *reusable_config - name: "Last Green Bazel (with bzlmod)" - platform: ubuntu1804 + name: "Last Green Bazel" + platform: windows bazel: last_green - build_flags: - - "--enable_bzlmod" - - "--incompatible_config_setting_private_default_visibility" - - "--incompatible_disallow_empty_glob" test_flags: - - "--enable_bzlmod" - - "--test_env=PATH" + <<: *reusable_test_flags + # TODO(laszlocsomor): remove "--test_env=LOCALAPPDATA" after + # https://github.com/bazelbuild/bazel/issues/7761 is fixed + ? "--test_env=LOCALAPPDATA" + ? "--test_tag_filters=-no_windows" buildifier: latest diff --git a/third_party/bazel-skylib/BUILD b/third_party/bazel-skylib/BUILD index 3a0651a4..fdccf79d 100644 --- a/third_party/bazel-skylib/BUILD +++ b/third_party/bazel-skylib/BUILD @@ -1,8 +1,18 @@ +load("@rules_license//rules:license.bzl", "license") load("//:bzl_library.bzl", "bzl_library") -licenses(["notice"]) +package( + default_applicable_licenses = ["//:license"], + default_visibility = ["//visibility:public"], +) -package(default_visibility = ["//visibility:public"]) +license( + name = "license", + package_name = "bazelbuild/bazel_skylib", + license_kinds = ["@rules_license//licenses/spdx:Apache-2.0"], +) + +licenses(["notice"]) # buildifier: disable=skylark-comment # gazelle:exclude skylark_library.bzl diff --git a/third_party/bazel-skylib/CHANGELOG.md b/third_party/bazel-skylib/CHANGELOG.md index cd7ef4c5..13c061f2 100644 --- a/third_party/bazel-skylib/CHANGELOG.md +++ b/third_party/bazel-skylib/CHANGELOG.md @@ -1,3 +1,29 @@ +Release 1.6.1 + +## What's Changed +* Fix `modules` Bazel 6 compatibility by @phst in https://github.com/bazelbuild/bazel-skylib/pull/499 + +## New Contributors +* @phst made their first contribution in https://github.com/bazelbuild/bazel-skylib/pull/499 + +**Full Changelog**: https://github.com/bazelbuild/bazel-skylib/compare/1.6.0...1.6.1 + +Release 1.6.0 + +## What's Changed +* Add helper functions for module extensions as `modules` by @fmeum in https://github.com/bazelbuild/bazel-skylib/pull/457 +* Make `out` on `native_binary` optional by @tpudlik in https://github.com/bazelbuild/bazel-skylib/pull/474 +* Remove outdated rules_cc dependency @cpsauer in https://github.com/bazelbuild/bazel-skylib/pull/476 +* Add toolchains argument to unittests.make by @jylinv0 in https://github.com/bazelbuild/bazel-skylib/pull/483 +* Allow `bzl_library` to depend on non-`bzl_library` targets by @Wyverald in https://github.com/bazelbuild/bazel-skylib/pull/495 + +## New Contributors +* @jylinv0 made their first contribution in https://github.com/bazelbuild/bazel-skylib/pull/483 +* @tpudlik made their first contribution in https://github.com/bazelbuild/bazel-skylib/pull/474 + +**Full Changelog**: https://github.com/bazelbuild/bazel-skylib/compare/1.5.0...1.6.0 + + Release 1.5.0 ## What's Changed diff --git a/third_party/bazel-skylib/MODULE.bazel b/third_party/bazel-skylib/MODULE.bazel index 298974a3..13cd955f 100644 --- a/third_party/bazel-skylib/MODULE.bazel +++ b/third_party/bazel-skylib/MODULE.bazel @@ -1,7 +1,7 @@ module( name = "bazel_skylib", # Keep in sync with version.bzl and @bazel_skylib_gazelle_plugin//:MODULE.bazel - version = "1.5.0", + version = "1.6.1", compatibility_level = 1, ) @@ -11,13 +11,13 @@ register_toolchains( ) bazel_dep(name = "platforms", version = "0.0.4") +bazel_dep(name = "rules_license", version = "0.0.7") ### INTERNAL ONLY - lines after this are not included in the release packaging. # Build-only / test-only dependencies -bazel_dep(name = "stardoc", version = "0.5.6", dev_dependency = True, repo_name = "io_bazel_stardoc") +bazel_dep(name = "stardoc", version = "0.6.2", dev_dependency = True, repo_name = "io_bazel_stardoc") bazel_dep(name = "rules_pkg", version = "0.9.1", dev_dependency = True) -bazel_dep(name = "rules_cc", version = "0.0.2", dev_dependency = True) # Needed for bazelci and for building distribution tarballs. # If using an unreleased version of bazel_skylib via git_override, apply @@ -27,3 +27,9 @@ local_path_override( module_name = "bazel_skylib_gazelle_plugin", path = "gazelle", ) + +as_extension_test_ext = use_extension("//tests:modules_test.bzl", "as_extension_test_ext") +use_repo(as_extension_test_ext, "bar", "foo") + +use_all_repos_test_ext = use_extension("//tests:modules_test.bzl", "use_all_repos_test_ext") +use_repo(use_all_repos_test_ext, "baz", "qux") diff --git a/third_party/bazel-skylib/README.md b/third_party/bazel-skylib/README.md index 0c13d323..2c22da7a 100644 --- a/third_party/bazel-skylib/README.md +++ b/third_party/bazel-skylib/README.md @@ -48,6 +48,7 @@ s = shell.quote(p) * [paths](docs/paths_doc.md) * [selects](docs/selects_doc.md) * [sets](lib/sets.bzl) - _deprecated_, use `new_sets` +* [modules](docs/modules_doc.md) * [new_sets](docs/new_sets_doc.md) * [shell](docs/shell_doc.md) * [structs](docs/structs_doc.md) diff --git a/third_party/bazel-skylib/WORKSPACE b/third_party/bazel-skylib/WORKSPACE index de970695..5746f25a 100644 --- a/third_party/bazel-skylib/WORKSPACE +++ b/third_party/bazel-skylib/WORKSPACE @@ -27,10 +27,10 @@ bazel_skylib_gazelle_plugin_setup() maybe( http_archive, name = "io_bazel_stardoc", - sha256 = "dfbc364aaec143df5e6c52faf1f1166775a5b4408243f445f44b661cfdc3134f", + sha256 = "62bd2e60216b7a6fec3ac79341aa201e0956477e7c8f6ccc286f279ad1d96432", urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/stardoc/releases/download/0.5.6/stardoc-0.5.6.tar.gz", - "https://github.com/bazelbuild/stardoc/releases/download/0.5.6/stardoc-0.5.6.tar.gz", + "https://mirror.bazel.build/github.com/bazelbuild/stardoc/releases/download/0.6.2/stardoc-0.6.2.tar.gz", + "https://github.com/bazelbuild/stardoc/releases/download/0.6.2/stardoc-0.6.2.tar.gz", ], ) @@ -38,6 +38,22 @@ load("@io_bazel_stardoc//:setup.bzl", "stardoc_repositories") stardoc_repositories() +load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps") + +rules_jvm_external_deps() + +load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup") + +rules_jvm_external_setup() + +load("@io_bazel_stardoc//:deps.bzl", "stardoc_external_deps") + +stardoc_external_deps() + +load("@stardoc_maven//:defs.bzl", stardoc_pinned_maven_install = "pinned_maven_install") + +stardoc_pinned_maven_install() + maybe( http_archive, name = "rules_pkg", @@ -52,16 +68,6 @@ load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies") rules_pkg_dependencies() -maybe( - name = "rules_cc", - repo_rule = http_archive, - sha256 = "4dccbfd22c0def164c8f47458bd50e0c7148f3d92002cdb459c2a96a68498241", - urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/rules_cc/releases/download/0.0.1/rules_cc-0.0.1.tar.gz", - "https://github.com/bazelbuild/rules_cc/releases/download/0.0.1/rules_cc-0.0.1.tar.gz", - ], -) - load("//lib:unittest.bzl", "register_unittest_toolchains") register_unittest_toolchains() diff --git a/third_party/bazel-skylib/bzl_library.bzl b/third_party/bazel-skylib/bzl_library.bzl index 9091894f..a139386e 100644 --- a/third_party/bazel-skylib/bzl_library.bzl +++ b/third_party/bazel-skylib/bzl_library.bzl @@ -54,10 +54,7 @@ bzl_library = rule( ), "deps": attr.label_list( allow_files = [".bzl", ".scl"], - providers = [ - [StarlarkLibraryInfo], - ], - doc = """List of other `bzl_library` targets that are required by the + doc = """List of other `bzl_library` or `filegroup` targets that are required by the Starlark files listed in `srcs`.""", ), }, diff --git a/third_party/bazel-skylib/distribution/BUILD b/third_party/bazel-skylib/distribution/BUILD index 4465779a..95ec9af0 100644 --- a/third_party/bazel-skylib/distribution/BUILD +++ b/third_party/bazel-skylib/distribution/BUILD @@ -4,9 +4,12 @@ load("@rules_pkg//:pkg.bzl", "pkg_tar") load("distribution.bzl", "remove_internal_only") package( + default_applicable_licenses = ["//:license"], default_visibility = ["//visibility:private"], ) +licenses(["notice"]) + remove_internal_only( name = "distro_workspace", src = "//:WORKSPACE", diff --git a/third_party/bazel-skylib/docs/BUILD b/third_party/bazel-skylib/docs/BUILD index a809f2f0..8569278e 100644 --- a/third_party/bazel-skylib/docs/BUILD +++ b/third_party/bazel-skylib/docs/BUILD @@ -1,5 +1,7 @@ load("//docs/private:stardoc_with_diff_test.bzl", "stardoc_with_diff_test", "update_docs") +package(default_applicable_licenses = ["//:license"]) + licenses(["notice"]) stardoc_with_diff_test( @@ -62,6 +64,12 @@ stardoc_with_diff_test( out_label = "//docs:expand_template_doc.md", ) +stardoc_with_diff_test( + name = "modules", + bzl_library_target = "//lib:modules", + out_label = "//docs:modules_doc.md", +) + stardoc_with_diff_test( name = "native_binary", bzl_library_target = "//rules:native_binary", diff --git a/third_party/bazel-skylib/docs/analysis_test_doc.md b/third_party/bazel-skylib/docs/analysis_test_doc.md index ebb95a47..46514cf6 100755 --- a/third_party/bazel-skylib/docs/analysis_test_doc.md +++ b/third_party/bazel-skylib/docs/analysis_test_doc.md @@ -12,30 +12,30 @@ analysis_test(name, name | A unique name for this target. | Name | required | | -| deps | List of other bzl_library targets that are required by the Starlark files listed in srcs. | List of labels | optional | [] | -| srcs | List of .bzl and .scl files that are processed to create this target. | List of labels | optional | [] | +| deps | List of other `bzl_library` or `filegroup` targets that are required by the Starlark files listed in `srcs`. | List of labels | optional | `[]` | +| srcs | List of `.bzl` and `.scl` files that are processed to create this target. | List of labels | optional | `[]` | diff --git a/third_party/bazel-skylib/docs/collections_doc.md b/third_party/bazel-skylib/docs/collections_doc.md index cd9db8b1..7da8f8d0 100755 --- a/third_party/bazel-skylib/docs/collections_doc.md +++ b/third_party/bazel-skylib/docs/collections_doc.md @@ -17,7 +17,7 @@ Inserts `separator` after each item in `iterable`. | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| separator | The value to insert after each item in iterable. | none | +| separator | The value to insert after each item in `iterable`. | none | | iterable | The list into which to intersperse the separator. | none | **RETURNS** @@ -40,7 +40,7 @@ Inserts `separator` before each item in `iterable`. | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| separator | The value to insert before each item in iterable. | none | +| separator | The value to insert before each item in `iterable`. | none | | iterable | The list into which to intersperse the separator. | none | **RETURNS** diff --git a/third_party/bazel-skylib/docs/common_settings_doc.md b/third_party/bazel-skylib/docs/common_settings_doc.md index b224f529..21268d6f 100755 --- a/third_party/bazel-skylib/docs/common_settings_doc.md +++ b/third_party/bazel-skylib/docs/common_settings_doc.md @@ -8,7 +8,6 @@ For label-typed settings, use the native label_flag and label_setting rules. More documentation on how to use build settings at https://bazel.build/extending/config#user-defined-build-settings - ## bool_flag @@ -61,7 +60,7 @@ An int-typed build setting that can be set on the command line | Name | Description | Type | Mandatory | Default | | :------------- | :------------- | :------------- | :------------- | :------------- | | name | A unique name for this target. | Name | required | | -| make_variable | If set, the build setting's value will be available as a Make variable with this name in the attributes of rules that list this build setting in their 'toolchains' attribute. | String | optional | "" | +| make_variable | If set, the build setting's value will be available as a Make variable with this name in the attributes of rules that list this build setting in their 'toolchains' attribute. | String | optional | `""` | @@ -80,7 +79,7 @@ An int-typed build setting that cannot be set on the command line | Name | Description | Type | Mandatory | Default | | :------------- | :------------- | :------------- | :------------- | :------------- | | name | A unique name for this target. | Name | required | | -| make_variable | If set, the build setting's value will be available as a Make variable with this name in the attributes of rules that list this build setting in their 'toolchains' attribute. | String | optional | "" | +| make_variable | If set, the build setting's value will be available as a Make variable with this name in the attributes of rules that list this build setting in their 'toolchains' attribute. | String | optional | `""` | @@ -99,8 +98,8 @@ A string-typed build setting that can be set on the command line | Name | Description | Type | Mandatory | Default | | :------------- | :------------- | :------------- | :------------- | :------------- | | name | A unique name for this target. | Name | required | | -| make_variable | If set, the build setting's value will be available as a Make variable with this name in the attributes of rules that list this build setting in their 'toolchains' attribute. | String | optional | "" | -| values | The list of allowed values for this setting. An error is raised if any other value is given. | List of strings | optional | [] | +| make_variable | If set, the build setting's value will be available as a Make variable with this name in the attributes of rules that list this build setting in their 'toolchains' attribute. | String | optional | `""` | +| values | The list of allowed values for this setting. An error is raised if any other value is given. | List of strings | optional | `[]` | @@ -155,8 +154,8 @@ A string-typed build setting that cannot be set on the command line | Name | Description | Type | Mandatory | Default | | :------------- | :------------- | :------------- | :------------- | :------------- | | name | A unique name for this target. | Name | required | | -| make_variable | If set, the build setting's value will be available as a Make variable with this name in the attributes of rules that list this build setting in their 'toolchains' attribute. | String | optional | "" | -| values | The list of allowed values for this setting. An error is raised if any other value is given. | List of strings | optional | [] | +| make_variable | If set, the build setting's value will be available as a Make variable with this name in the attributes of rules that list this build setting in their 'toolchains' attribute. | String | optional | `""` | +| values | The list of allowed values for this setting. An error is raised if any other value is given. | List of strings | optional | `[]` | diff --git a/third_party/bazel-skylib/docs/copy_directory_doc.md b/third_party/bazel-skylib/docs/copy_directory_doc.md index 1177d20e..76e5207b 100755 --- a/third_party/bazel-skylib/docs/copy_directory_doc.md +++ b/third_party/bazel-skylib/docs/copy_directory_doc.md @@ -5,7 +5,6 @@ A rule that copies a directory to another place. The rule uses a Bash command on Linux/macOS/non-Windows, and a cmd.exe command on Windows (no Bash is required). - ## copy_directory @@ -33,7 +32,7 @@ for more context. | name | Name of the rule. | none | | src | The directory to make a copy of. Can be a source directory or TreeArtifact. | none | | out | Path of the output directory, relative to this package. | none | -| kwargs | further keyword arguments, e.g. visibility | none | +| kwargs | further keyword arguments, e.g. `visibility` | none | @@ -58,6 +57,6 @@ other rule implementations. | ctx | The rule context. | none | | src | The directory to make a copy of. Can be a source directory or TreeArtifact. | none | | dst | The directory to copy to. Must be a TreeArtifact. | none | -| is_windows | If true, an cmd.exe action is created so there is no bash dependency. | False | +| is_windows | If true, an cmd.exe action is created so there is no bash dependency. | `False` | diff --git a/third_party/bazel-skylib/docs/copy_file_doc.md b/third_party/bazel-skylib/docs/copy_file_doc.md index ed297a66..7fb9cb16 100755 --- a/third_party/bazel-skylib/docs/copy_file_doc.md +++ b/third_party/bazel-skylib/docs/copy_file_doc.md @@ -8,7 +8,6 @@ The 'copy_file' rule does this with a simpler interface than genrule. The rule uses a Bash command on Linux/macOS/non-Windows, and a cmd.exe command on Windows (no Bash is required). - ## copy_file @@ -32,8 +31,8 @@ This rule uses a Bash command on Linux/macOS/non-Windows, and a cmd.exe command | name | Name of the rule. | none | | src | A Label. The file to make a copy of. (Can also be the label of a rule that generates a file.) | none | | out | Path of the output file, relative to this package. | none | -| is_executable | A boolean. Whether to make the output file executable. When True, the rule's output can be executed using bazel run and can be in the srcs of binary and test rules that require executable sources. WARNING: If allow_symlink is True, src must also be executable. | False | -| allow_symlink | A boolean. Whether to allow symlinking instead of copying. When False, the output is always a hard copy. When True, the output *can* be a symlink, but there is no guarantee that a symlink is created (i.e., at the time of writing, we don't create symlinks on Windows). Set this to True if you need fast copying and your tools can handle symlinks (which most UNIX tools can). | False | -| kwargs | further keyword arguments, e.g. visibility | none | +| is_executable | A boolean. Whether to make the output file executable. When True, the rule's output can be executed using `bazel run` and can be in the srcs of binary and test rules that require executable sources. WARNING: If `allow_symlink` is True, `src` must also be executable. | `False` | +| allow_symlink | A boolean. Whether to allow symlinking instead of copying. When False, the output is always a hard copy. When True, the output *can* be a symlink, but there is no guarantee that a symlink is created (i.e., at the time of writing, we don't create symlinks on Windows). Set this to True if you need fast copying and your tools can handle symlinks (which most UNIX tools can). | `False` | +| kwargs | further keyword arguments, e.g. `visibility` | none | diff --git a/third_party/bazel-skylib/docs/dicts_doc.md b/third_party/bazel-skylib/docs/dicts_doc.md index 23603258..36a28d0b 100755 --- a/third_party/bazel-skylib/docs/dicts_doc.md +++ b/third_party/bazel-skylib/docs/dicts_doc.md @@ -49,7 +49,7 @@ Returns a new `dict` that has all the entries of `dictionary` with keys not in ` | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| dictionary | A dict. | none | +| dictionary | A `dict`. | none | | keys | A sequence. | none | **RETURNS** @@ -72,7 +72,7 @@ Returns a new `dict` that has all the entries of `dictionary` with keys in `keys | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| dictionary | A dict. | none | +| dictionary | A `dict`. | none | | keys | A sequence. | none | **RETURNS** diff --git a/third_party/bazel-skylib/docs/diff_test_doc.md b/third_party/bazel-skylib/docs/diff_test_doc.md index c9189ecd..a8c4c573 100755 --- a/third_party/bazel-skylib/docs/diff_test_doc.md +++ b/third_party/bazel-skylib/docs/diff_test_doc.md @@ -5,7 +5,6 @@ A test rule that compares two binary files. The rule uses a Bash command (diff) on Linux/macOS/non-Windows, and a cmd.exe command (fc.exe) on Windows (no Bash is required). - ## diff_test @@ -25,9 +24,9 @@ The test succeeds if the files' contents match. | Name | Description | Default Value | | :------------- | :------------- | :------------- | | name | The name of the test rule. | none | -| file1 | Label of the file to compare to file2. | none | -| file2 | Label of the file to compare to file1. | none | -| failure_message | Additional message to log if the files' contents do not match. | None | +| file1 | Label of the file to compare to `file2`. | none | +| file2 | Label of the file to compare to `file1`. | none | +| failure_message | Additional message to log if the files' contents do not match. | `None` | | kwargs | The [common attributes for tests](https://bazel.build/reference/be/common-definitions#common-attributes-tests). | none | diff --git a/third_party/bazel-skylib/docs/expand_template_doc.md b/third_party/bazel-skylib/docs/expand_template_doc.md index 6d6dd2a9..34bbb3ad 100755 --- a/third_party/bazel-skylib/docs/expand_template_doc.md +++ b/third_party/bazel-skylib/docs/expand_template_doc.md @@ -2,7 +2,6 @@ A rule that performs template expansion. - ## expand_template diff --git a/third_party/bazel-skylib/docs/maintainers_guide.md b/third_party/bazel-skylib/docs/maintainers_guide.md index f5408ce1..9e6db782 100644 --- a/third_party/bazel-skylib/docs/maintainers_guide.md +++ b/third_party/bazel-skylib/docs/maintainers_guide.md @@ -109,7 +109,7 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "bazel_skylib", - sha256 = "$SHA256SUM" + sha256 = "$SHA256SUM", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/$VERSION/bazel-skylib-$VERSION.tar.gz", "https://github.com/bazelbuild/bazel-skylib/releases/download/$VERSION/bazel-skylib-$VERSION.tar.gz", diff --git a/third_party/bazel-skylib/docs/modules_doc.md b/third_party/bazel-skylib/docs/modules_doc.md new file mode 100755 index 00000000..18042eed --- /dev/null +++ b/third_party/bazel-skylib/docs/modules_doc.md @@ -0,0 +1,78 @@ + + +Skylib module containing utilities for Bazel modules and module extensions. + + + +## modules.as_extension + +
+modules.as_extension(macro, doc)
+
+ +Wraps a WORKSPACE dependency macro into a module extension. + +Example: +```starlark +def rules_foo_deps(optional_arg = True): + some_repo_rule(name = "foobar") + http_archive(name = "bazqux") + +rules_foo_deps_ext = modules.as_extension(rules_foo_deps) +``` + + +**PARAMETERS** + + +| Name | Description | Default Value | +| :------------- | :------------- | :------------- | +| macro | A [WORKSPACE dependency macro](https://bazel.build/rules/deploying#dependencies), i.e., a function with no required parameters that instantiates one or more repository rules. | none | +| doc | A description of the module extension that can be extracted by documentation generating tools. | `None` | + +**RETURNS** + +A module extension that generates the repositories instantiated by the given macro and also +uses [`use_all_repos`](#use_all_repos) to indicate that all of those repositories should be +imported via `use_repo`. The extension is marked as reproducible if supported by the current +version of Bazel and thus doesn't result in a lockfile entry. + + + + +## modules.use_all_repos + +
+modules.use_all_repos(module_ctx, reproducible)
+
+ +Return from a module extension that should have all its repositories imported via `use_repo`. + +Example: +```starlark +def _ext_impl(module_ctx): + some_repo_rule(name = "foobar") + http_archive(name = "bazqux") + return modules.use_all_repos(module_ctx) + +ext = module_extension(_ext_impl) +``` + + +**PARAMETERS** + + +| Name | Description | Default Value | +| :------------- | :------------- | :------------- | +| module_ctx | The [`module_ctx`](https://bazel.build/rules/lib/builtins/module_ctx) object passed to the module extension's implementation function. | none | +| reproducible | The value of the `reproducible` parameter to pass to the [`extension_metadata`](https://bazel.build/rules/lib/builtins/extension_metadata.html) object returned by this function. This is safe to set with Bazel versions that don't support this parameter and will be ignored in that case. | `False` | + +**RETURNS** + +An [`extension_metadata`](https://bazel.build/rules/lib/builtins/extension_metadata.html) +object that, when returned from a module extension implementation function, specifies that all +repositories generated by this extension should be imported via `use_repo`. If the current +version of Bazel doesn't support `extension_metadata`, returns `None` instead, which can +safely be returned from a module extension implementation function in all versions of Bazel. + + diff --git a/third_party/bazel-skylib/docs/native_binary_doc.md b/third_party/bazel-skylib/docs/native_binary_doc.md index 2b603bed..02152cfe 100755 --- a/third_party/bazel-skylib/docs/native_binary_doc.md +++ b/third_party/bazel-skylib/docs/native_binary_doc.md @@ -7,31 +7,28 @@ and test rule respectively. They fulfill the same goal as sh_binary and sh_test do, but they run the wrapped binary directly, instead of through Bash, so they don't depend on Bash and work with --shell_executable="". - ## native_binary
-native_binary(name, data, out, src)
+native_binary(name, src, data, out)
 
- Wraps a pre-built binary or script with a binary rule. You can "bazel run" this rule like any other binary rule, and use it as a tool in genrule.tools for example. You can also augment the binary with runfiles. - **ATTRIBUTES** | Name | Description | Type | Mandatory | Default | | :------------- | :------------- | :------------- | :------------- | :------------- | | name | A unique name for this target. | Name | required | | -| data | data dependencies. See https://bazel.build/reference/be/common-definitions#typical.data | List of labels | optional | [] | -| out | An output name for the copy of the binary | String | required | | | src | path of the pre-built executable | Label | required | | +| data | data dependencies. See https://bazel.build/reference/be/common-definitions#typical.data | List of labels | optional | `[]` | +| out | An output name for the copy of the binary. Defaults to name.exe. (We add .exe to the name by default because it's required on Windows and tolerated on other platforms.) | String | optional | `""` | @@ -39,24 +36,22 @@ in genrule.tools for example. You can also augment the binary with runfiles. ## native_test
-native_test(name, data, out, src)
+native_test(name, src, data, out)
 
- Wraps a pre-built binary or script with a test rule. You can "bazel test" this rule like any other test rule. You can also augment the binary with runfiles. - **ATTRIBUTES** | Name | Description | Type | Mandatory | Default | | :------------- | :------------- | :------------- | :------------- | :------------- | | name | A unique name for this target. | Name | required | | -| data | data dependencies. See https://bazel.build/reference/be/common-definitions#typical.data | List of labels | optional | [] | -| out | An output name for the copy of the binary | String | required | | | src | path of the pre-built executable | Label | required | | +| data | data dependencies. See https://bazel.build/reference/be/common-definitions#typical.data | List of labels | optional | `[]` | +| out | An output name for the copy of the binary. Defaults to name.exe. (We add .exe to the name by default because it's required on Windows and tolerated on other platforms.) | String | optional | `""` | diff --git a/third_party/bazel-skylib/docs/new_sets_doc.md b/third_party/bazel-skylib/docs/new_sets_doc.md index 4f7fde22..341eff53 100755 --- a/third_party/bazel-skylib/docs/new_sets_doc.md +++ b/third_party/bazel-skylib/docs/new_sets_doc.md @@ -2,38 +2,35 @@ Skylib module containing common hash-set algorithms. - An empty set can be created using: `sets.make()`, or it can be created with some starting values - if you pass it an sequence: `sets.make([1, 2, 3])`. This returns a struct containing all of the - values as keys in a dictionary - this means that all passed in values must be hashable. The - values in the set can be retrieved using `sets.to_list(my_set)`. +An empty set can be created using: `sets.make()`, or it can be created with some starting values +if you pass it an sequence: `sets.make([1, 2, 3])`. This returns a struct containing all of the +values as keys in a dictionary - this means that all passed in values must be hashable. The +values in the set can be retrieved using `sets.to_list(my_set)`. - An arbitrary object can be tested whether it is a set generated by `sets.make()` or not with the - `types.is_set()` method in types.bzl. +An arbitrary object can be tested whether it is a set generated by `sets.make()` or not with the +`types.is_set()` method in types.bzl. + - - -## sets.make +## sets.contains
-sets.make(elements)
+sets.contains(a, e)
 
-Creates a new set. - -All elements must be hashable. - +Checks for the existence of an element in a set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| elements | Optional sequence to construct the set out of. | None | +| a | A set, as returned by `sets.make()`. | none | +| e | The element to look for. | none | **RETURNS** -A set containing the passed in values. +True if the element exists in the set, False if the element does not. @@ -51,33 +48,60 @@ Creates a new set from another set. | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| s | A set, as returned by sets.make(). | none | +| s | A set, as returned by `sets.make()`. | none | **RETURNS** A new set containing the same elements as `s`. - + -## sets.to_list +## sets.difference
-sets.to_list(s)
+sets.difference(a, b)
 
-Creates a list from the values in the set. +Returns the elements in `a` that are not in `b`. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| s | A set, as returned by sets.make(). | none | +| a | A set, as returned by `sets.make()`. | none | +| b | A set, as returned by `sets.make()`. | none | **RETURNS** -A list of values inserted into the set. +A set containing the elements that are in `a` but not in `b`. + + + + +## sets.disjoint + +
+sets.disjoint(a, b)
+
+ +Returns whether two sets are disjoint. + +Two sets are disjoint if they have no elements in common. + + +**PARAMETERS** + + +| Name | Description | Default Value | +| :------------- | :------------- | :------------- | +| a | A set, as returned by `sets.make()`. | none | +| b | A set, as returned by `sets.make()`. | none | + +**RETURNS** + +True if `a` and `b` are disjoint, False otherwise. @@ -98,7 +122,7 @@ Element must be hashable. This mutates the original set. | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| s | A set, as returned by sets.make(). | none | +| s | A set, as returned by `sets.make()`. | none | | e | The element to be inserted. | none | **RETURNS** @@ -106,27 +130,27 @@ Element must be hashable. This mutates the original set. The set `s` with `e` included. - + -## sets.contains +## sets.intersection
-sets.contains(a, e)
+sets.intersection(a, b)
 
-Checks for the existence of an element in a set. +Returns the intersection of two sets. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| a | A set, as returned by sets.make(). | none | -| e | The element to look for. | none | +| a | A set, as returned by `sets.make()`. | none | +| b | A set, as returned by `sets.make()`. | none | **RETURNS** -True if the element exists in the set, False if the element does not. +A set containing the elements that are in both `a` and `b`. @@ -144,8 +168,8 @@ Returns whether two sets are equal. | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| a | A set, as returned by sets.make(). | none | -| b | A set, as returned by sets.make(). | none | +| a | A set, as returned by `sets.make()`. | none | +| b | A set, as returned by `sets.make()`. | none | **RETURNS** @@ -167,197 +191,172 @@ Returns whether `a` is a subset of `b`. | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| a | A set, as returned by sets.make(). | none | -| b | A set, as returned by sets.make(). | none | +| a | A set, as returned by `sets.make()`. | none | +| b | A set, as returned by `sets.make()`. | none | **RETURNS** True if `a` is a subset of `b`, False otherwise. - + -## sets.disjoint +## sets.length
-sets.disjoint(a, b)
+sets.length(s)
 
-Returns whether two sets are disjoint. - -Two sets are disjoint if they have no elements in common. - +Returns the number of elements in a set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| a | A set, as returned by sets.make(). | none | -| b | A set, as returned by sets.make(). | none | +| s | A set, as returned by `sets.make()`. | none | **RETURNS** -True if `a` and `b` are disjoint, False otherwise. +An integer representing the number of elements in the set. - + -## sets.intersection +## sets.make
-sets.intersection(a, b)
+sets.make(elements)
 
-Returns the intersection of two sets. - -**PARAMETERS** - - -| Name | Description | Default Value | -| :------------- | :------------- | :------------- | -| a | A set, as returned by sets.make(). | none | -| b | A set, as returned by sets.make(). | none | - -**RETURNS** - -A set containing the elements that are in both `a` and `b`. - - - - -## sets.union +Creates a new set. -
-sets.union(args)
-
+All elements must be hashable. -Returns the union of several sets. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| args | An arbitrary number of sets. | none | +| elements | Optional sequence to construct the set out of. | `None` | **RETURNS** -The set union of all sets in `*args`. +A set containing the passed in values. - + -## sets.difference +## sets.remove
-sets.difference(a, b)
+sets.remove(s, e)
 
-Returns the elements in `a` that are not in `b`. +Removes an element from the set. + +Element must be hashable. This mutates the original set. + **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| a | A set, as returned by sets.make(). | none | -| b | A set, as returned by sets.make(). | none | +| s | A set, as returned by `sets.make()`. | none | +| e | The element to be removed. | none | **RETURNS** -A set containing the elements that are in `a` but not in `b`. +The set `s` with `e` removed. - + -## sets.length +## sets.repr
-sets.length(s)
+sets.repr(s)
 
-Returns the number of elements in a set. +Returns a string value representing the set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| s | A set, as returned by sets.make(). | none | +| s | A set, as returned by `sets.make()`. | none | **RETURNS** -An integer representing the number of elements in the set. +A string representing the set. - + -## sets.remove +## sets.str
-sets.remove(s, e)
+sets.str(s)
 
-Removes an element from the set. - -Element must be hashable. This mutates the original set. - +Returns a string value representing the set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| s | A set, as returned by sets.make(). | none | -| e | The element to be removed. | none | +| s | A set, as returned by `sets.make()`. | none | **RETURNS** -The set `s` with `e` removed. +A string representing the set. - + -## sets.repr +## sets.to_list
-sets.repr(s)
+sets.to_list(s)
 
-Returns a string value representing the set. +Creates a list from the values in the set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| s | A set, as returned by sets.make(). | none | +| s | A set, as returned by `sets.make()`. | none | **RETURNS** -A string representing the set. +A list of values inserted into the set. - + -## sets.str +## sets.union
-sets.str(s)
+sets.union(args)
 
-Returns a string value representing the set. +Returns the union of several sets. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| s | A set, as returned by sets.make(). | none | +| args | An arbitrary number of sets. | none | **RETURNS** -A string representing the set. +The set union of all sets in `*args`. diff --git a/third_party/bazel-skylib/docs/partial_doc.md b/third_party/bazel-skylib/docs/partial_doc.md index 97d4094b..4c2a5d4a 100755 --- a/third_party/bazel-skylib/docs/partial_doc.md +++ b/third_party/bazel-skylib/docs/partial_doc.md @@ -6,6 +6,51 @@ Partial function objects allow some parameters are bound before the call. Similar to https://docs.python.org/3/library/functools.html#functools.partial. + + +## partial.call + +
+partial.call(partial, args, kwargs)
+
+ +Calls a partial created using `make`. + +**PARAMETERS** + + +| Name | Description | Default Value | +| :------------- | :------------- | :------------- | +| partial | The partial to be called. | none | +| args | Additional positional arguments to be appended to the ones given to make. | none | +| kwargs | Additional keyword arguments to augment and override the ones given to make. | none | + +**RETURNS** + +Whatever the function in the partial returns. + + + + +## partial.is_instance + +
+partial.is_instance(v)
+
+ +Returns True if v is a partial created using `make`. + +**PARAMETERS** + + +| Name | Description | Default Value | +| :------------- | :------------- | :------------- | +| v | The value to check. | none | + +**RETURNS** + +True if v was created by `make`, False otherwise. + @@ -123,49 +168,3 @@ partial.call(func, x=2) A new `partial` that can be called using `call` - - -## partial.call - -
-partial.call(partial, args, kwargs)
-
- -Calls a partial created using `make`. - -**PARAMETERS** - - -| Name | Description | Default Value | -| :------------- | :------------- | :------------- | -| partial | The partial to be called. | none | -| args | Additional positional arguments to be appended to the ones given to make. | none | -| kwargs | Additional keyword arguments to augment and override the ones given to make. | none | - -**RETURNS** - -Whatever the function in the partial returns. - - - - -## partial.is_instance - -
-partial.is_instance(v)
-
- -Returns True if v is a partial created using `make`. - -**PARAMETERS** - - -| Name | Description | Default Value | -| :------------- | :------------- | :------------- | -| v | The value to check. | none | - -**RETURNS** - -True if v was created by `make`, False otherwise. - - diff --git a/third_party/bazel-skylib/docs/paths_doc.md b/third_party/bazel-skylib/docs/paths_doc.md index e9d619db..e78c0d37 100755 --- a/third_party/bazel-skylib/docs/paths_doc.md +++ b/third_party/bazel-skylib/docs/paths_doc.md @@ -6,7 +6,6 @@ NOTE: The functions in this module currently only support paths with Unix-style path separators (forward slash, "/"); they do not handle Windows-style paths with backslash separators or drive letters. - ## paths.basename diff --git a/third_party/bazel-skylib/docs/private/BUILD b/third_party/bazel-skylib/docs/private/BUILD index f8c832b6..00b4e36f 100644 --- a/third_party/bazel-skylib/docs/private/BUILD +++ b/third_party/bazel-skylib/docs/private/BUILD @@ -1 +1,5 @@ -# No targets in this package +# This package only contains source targets + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) diff --git a/third_party/bazel-skylib/docs/private/stardoc_with_diff_test.bzl b/third_party/bazel-skylib/docs/private/stardoc_with_diff_test.bzl index a8542f3f..32b471a7 100644 --- a/third_party/bazel-skylib/docs/private/stardoc_with_diff_test.bzl +++ b/third_party/bazel-skylib/docs/private/stardoc_with_diff_test.bzl @@ -89,7 +89,7 @@ def update_docs( content = ["#!/usr/bin/env bash", "cd ${BUILD_WORKSPACE_DIRECTORY}"] data = [] for r in native.existing_rules().values(): - if r["kind"] == "stardoc": + if r["kind"] == "stardoc_markdown_renderer": doc_gen = r["out"] if doc_gen.startswith(":"): doc_gen = doc_gen[1:] diff --git a/third_party/bazel-skylib/docs/run_binary_doc.md b/third_party/bazel-skylib/docs/run_binary_doc.md index 50b62e40..468c7f5b 100755 --- a/third_party/bazel-skylib/docs/run_binary_doc.md +++ b/third_party/bazel-skylib/docs/run_binary_doc.md @@ -1,17 +1,15 @@ - run_binary() build rule implementation. Runs a binary as a build action. This rule does not require Bash (unlike native.genrule()). - ## run_binary
-run_binary(name, args, env, outs, srcs, tool)
+run_binary(name, srcs, outs, args, env, tool)
 
Runs a binary as a build action. @@ -24,10 +22,10 @@ This rule does not require Bash (unlike `native.genrule`). | Name | Description | Type | Mandatory | Default | | :------------- | :------------- | :------------- | :------------- | :------------- | | name | A unique name for this target. | Name | required | | -| args | Command line arguments of the binary.

Subject to [$(location)](https://bazel.build/reference/be/make-variables#predefined_label_variables) expansion. | List of strings | optional | [] | -| env | Environment variables of the action.

Subject to [$(location)](https://bazel.build/reference/be/make-variables#predefined_label_variables) expansion. | Dictionary: String -> String | optional | {} | -| outs | Output files generated by the action.

These labels are available for $(location) expansion in args and env. | List of labels | required | | -| srcs | Additional inputs of the action.

These labels are available for $(location) expansion in args and env. | List of labels | optional | [] | -| tool | The tool to run in the action.

Must be the label of a *_binary rule, of a rule that generates an executable file, or of a file that can be executed as a subprocess (e.g. an .exe or .bat file on Windows or a binary with executable permission on Linux). This label is available for $(location) expansion in args and env. | Label | required | | +| srcs | Additional inputs of the action.

These labels are available for `$(execpath)` and `$(location)` expansion in `args` and `env`. | List of labels | optional | `[]` | +| outs | Output files generated by the action.

These labels are available for `$(execpath)` and `$(location)` expansion in `args` and `env`. | List of labels | required | | +| args | Command line arguments of the binary.

Subject to [`$(execpath)` and `$(location)`](https://bazel.build/reference/be/make-variables#predefined_label_variables) expansion. | List of strings | optional | `[]` | +| env | Environment variables of the action.

Subject to [`$(execpath)` and `$(location)`](https://bazel.build/reference/be/make-variables#predefined_label_variables) expansion. | Dictionary: String -> String | optional | `{}` | +| tool | The tool to run in the action.

Must be the label of a *_binary rule, of a rule that generates an executable file, or of a file that can be executed as a subprocess (e.g. an .exe or .bat file on Windows or a binary with executable permission on Linux). This label is available for `$(execpath)` and `$(location)` expansion in `args` and `env`. | Label | required | | diff --git a/third_party/bazel-skylib/docs/select_file_doc.md b/third_party/bazel-skylib/docs/select_file_doc.md index 33c3bc49..b20d36fb 100755 --- a/third_party/bazel-skylib/docs/select_file_doc.md +++ b/third_party/bazel-skylib/docs/select_file_doc.md @@ -1,11 +1,9 @@ - select_file() build rule implementation. Selects a single file from the outputs of a target by given relative path. - ## select_file diff --git a/third_party/bazel-skylib/docs/selects_doc.md b/third_party/bazel-skylib/docs/selects_doc.md index 8e2f31b3..304a2d5a 100755 --- a/third_party/bazel-skylib/docs/selects_doc.md +++ b/third_party/bazel-skylib/docs/selects_doc.md @@ -2,6 +2,49 @@ Skylib module containing convenience interfaces for select(). + + +## selects.config_setting_group + +
+selects.config_setting_group(name, match_any, match_all, visibility)
+
+ +Matches if all or any of its member `config_setting`s match. + +Example: + + ```build + config_setting(name = "one", define_values = {"foo": "true"}) + config_setting(name = "two", define_values = {"bar": "false"}) + config_setting(name = "three", define_values = {"baz": "more_false"}) + + config_setting_group( + name = "one_two_three", + match_all = [":one", ":two", ":three"] + ) + + cc_binary( + name = "myapp", + srcs = ["myapp.cc"], + deps = select({ + ":one_two_three": [":special_deps"], + "//conditions:default": [":default_deps"] + }) + ``` + + +**PARAMETERS** + + +| Name | Description | Default Value | +| :------------- | :------------- | :------------- | +| name | The group's name. This is how `select()`s reference it. | none | +| match_any | A list of `config_settings`. This group matches if *any* member in the list matches. If this is set, `match_all` must not be set. | `[]` | +| match_all | A list of `config_settings`. This group matches if *every* member in the list matches. If this is set, `match_any` must be not set. | `[]` | +| visibility | Visibility of the config_setting_group. | `None` | + + ## selects.with_or @@ -31,8 +74,8 @@ Example: | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| input_dict | The same dictionary select() takes, except keys may take either the usual form "//foo:config1" or ("//foo:config1", "//foo:config2", ...) to signify //foo:config1 OR //foo:config2 OR .... | none | -| no_match_error | Optional custom error to report if no condition matches. | "" | +| input_dict | The same dictionary `select()` takes, except keys may take either the usual form `"//foo:config1"` or `("//foo:config1", "//foo:config2", ...)` to signify `//foo:config1` OR `//foo:config2` OR `...`. | none | +| no_match_error | Optional custom error to report if no condition matches. | `""` | **RETURNS** @@ -67,53 +110,10 @@ macros. | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| input_dict | Same as with_or. | none | +| input_dict | Same as `with_or`. | none | **RETURNS** A dictionary usable by a native `select()`. - - -## selects.config_setting_group - -
-selects.config_setting_group(name, match_any, match_all, visibility)
-
- -Matches if all or any of its member `config_setting`s match. - -Example: - - ```build - config_setting(name = "one", define_values = {"foo": "true"}) - config_setting(name = "two", define_values = {"bar": "false"}) - config_setting(name = "three", define_values = {"baz": "more_false"}) - - config_setting_group( - name = "one_two_three", - match_all = [":one", ":two", ":three"] - ) - - cc_binary( - name = "myapp", - srcs = ["myapp.cc"], - deps = select({ - ":one_two_three": [":special_deps"], - "//conditions:default": [":default_deps"] - }) - ``` - - -**PARAMETERS** - - -| Name | Description | Default Value | -| :------------- | :------------- | :------------- | -| name | The group's name. This is how select()s reference it. | none | -| match_any | A list of config_settings. This group matches if *any* member in the list matches. If this is set, match_all must not be set. | [] | -| match_all | A list of config_settings. This group matches if *every* member in the list matches. If this is set, match_any must be not set. | [] | -| visibility | Visibility of the config_setting_group. | None | - - diff --git a/third_party/bazel-skylib/docs/shell_doc.md b/third_party/bazel-skylib/docs/shell_doc.md index bd559b9c..60c55554 100755 --- a/third_party/bazel-skylib/docs/shell_doc.md +++ b/third_party/bazel-skylib/docs/shell_doc.md @@ -25,7 +25,7 @@ safety, even if they do not need to be. | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| iterable | A sequence of elements. Elements that are not strings will be converted to strings first, by calling str(). | none | +| iterable | A sequence of elements. Elements that are not strings will be converted to strings first, by calling `str()`. | none | **RETURNS** diff --git a/third_party/bazel-skylib/docs/structs_doc.md b/third_party/bazel-skylib/docs/structs_doc.md index 667aa466..a012f731 100755 --- a/third_party/bazel-skylib/docs/structs_doc.md +++ b/third_party/bazel-skylib/docs/structs_doc.md @@ -17,7 +17,7 @@ Converts a `struct` to a `dict`. | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| s | A struct. | none | +| s | A `struct`. | none | **RETURNS** diff --git a/third_party/bazel-skylib/docs/subpackages_doc.md b/third_party/bazel-skylib/docs/subpackages_doc.md index 8a0956f6..7275e0cb 100755 --- a/third_party/bazel-skylib/docs/subpackages_doc.md +++ b/third_party/bazel-skylib/docs/subpackages_doc.md @@ -2,7 +2,6 @@ Skylib module containing common functions for working with native.subpackages() - ## subpackages.all @@ -36,9 +35,9 @@ NOTE: fail()s if native.subpackages() is not supported. | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| exclude | see native.subpackages(exclude) | [] | -| allow_empty | see native.subpackages(allow_empty) | False | -| fully_qualified | It true return fully qualified Labels for subpackages, otherwise returns subpackage path relative to current package. | True | +| exclude | see native.subpackages(exclude) | `[]` | +| allow_empty | see native.subpackages(allow_empty) | `False` | +| fully_qualified | It true return fully qualified Labels for subpackages, otherwise returns subpackage path relative to current package. | `True` | **RETURNS** diff --git a/third_party/bazel-skylib/docs/types_doc.md b/third_party/bazel-skylib/docs/types_doc.md index bdc9cbaf..418ed6e5 100755 --- a/third_party/bazel-skylib/docs/types_doc.md +++ b/third_party/bazel-skylib/docs/types_doc.md @@ -2,92 +2,92 @@ Skylib module containing functions checking types. - + -## types.is_list +## types.is_bool
-types.is_list(v)
+types.is_bool(v)
 
-Returns True if v is an instance of a list. +Returns True if v is an instance of a bool. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| v | The value whose type should be checked. | none | +| v | The value whose type should be checked. | none | **RETURNS** -True if v is an instance of a list, False otherwise. +True if v is an instance of a bool, False otherwise. - + -## types.is_string +## types.is_depset
-types.is_string(v)
+types.is_depset(v)
 
-Returns True if v is an instance of a string. +Returns True if v is an instance of a `depset`. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| v | The value whose type should be checked. | none | +| v | The value whose type should be checked. | none | **RETURNS** -True if v is an instance of a string, False otherwise. +True if v is an instance of a `depset`, False otherwise. - + -## types.is_bool +## types.is_dict
-types.is_bool(v)
+types.is_dict(v)
 
-Returns True if v is an instance of a bool. +Returns True if v is an instance of a dict. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| v | The value whose type should be checked. | none | +| v | The value whose type should be checked. | none | **RETURNS** -True if v is an instance of a bool, False otherwise. +True if v is an instance of a dict, False otherwise. - + -## types.is_none +## types.is_function
-types.is_none(v)
+types.is_function(v)
 
-Returns True if v has the type of None. +Returns True if v is an instance of a function. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| v | The value whose type should be checked. | none | +| v | The value whose type should be checked. | none | **RETURNS** -True if v is None, False otherwise. +True if v is an instance of a function, False otherwise. @@ -112,113 +112,113 @@ Returns True if v is an instance of a signed integer. True if v is an instance of a signed integer, False otherwise. - + -## types.is_tuple +## types.is_list
-types.is_tuple(v)
+types.is_list(v)
 
-Returns True if v is an instance of a tuple. +Returns True if v is an instance of a list. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| v | The value whose type should be checked. | none | +| v | The value whose type should be checked. | none | **RETURNS** -True if v is an instance of a tuple, False otherwise. +True if v is an instance of a list, False otherwise. - + -## types.is_dict +## types.is_none
-types.is_dict(v)
+types.is_none(v)
 
-Returns True if v is an instance of a dict. +Returns True if v has the type of None. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| v | The value whose type should be checked. | none | +| v | The value whose type should be checked. | none | **RETURNS** -True if v is an instance of a dict, False otherwise. +True if v is None, False otherwise. - + -## types.is_function +## types.is_set
-types.is_function(v)
+types.is_set(v)
 
-Returns True if v is an instance of a function. +Returns True if v is a set created by sets.make(). **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| v | The value whose type should be checked. | none | +| v | The value whose type should be checked. | none | **RETURNS** -True if v is an instance of a function, False otherwise. +True if v was created by sets.make(), False otherwise. - + -## types.is_depset +## types.is_string
-types.is_depset(v)
+types.is_string(v)
 
-Returns True if v is an instance of a `depset`. +Returns True if v is an instance of a string. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| v | The value whose type should be checked. | none | +| v | The value whose type should be checked. | none | **RETURNS** -True if v is an instance of a `depset`, False otherwise. +True if v is an instance of a string, False otherwise. - + -## types.is_set +## types.is_tuple
-types.is_set(v)
+types.is_tuple(v)
 
-Returns True if v is a set created by sets.make(). +Returns True if v is an instance of a tuple. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| v | The value whose type should be checked. | none | +| v | The value whose type should be checked. | none | **RETURNS** -True if v was created by sets.make(), False otherwise. +True if v is an instance of a tuple, False otherwise. diff --git a/third_party/bazel-skylib/docs/unittest_doc.md b/third_party/bazel-skylib/docs/unittest_doc.md index 99000e44..d059e2cd 100755 --- a/third_party/bazel-skylib/docs/unittest_doc.md +++ b/third_party/bazel-skylib/docs/unittest_doc.md @@ -15,7 +15,6 @@ Unlike most Skylib files, this exports four modules: See https://bazel.build/extending/concepts for background about macros, rules, and the different phases of a build. - ## unittest_toolchain @@ -33,68 +32,14 @@ unittest_toolchain(name, name | A unique name for this target. | Name | required | | -| escape_chars_with | Dictionary of characters that need escaping in test failure message to prefix appended to escape those characters. For example, {"%": "%", ">": "^"} would replace % with %% and > with ^> in the failure message before that is included in success_templ. | Dictionary: String -> String | optional | {} | -| escape_other_chars_with | String to prefix every character in test failure message which is not a key in escape_chars_with before including that in success_templ. For example, "" would prefix every character in the failure message (except those in the keys of escape_chars_with) with \. | String | optional | "" | -| failure_templ | Test script template with a single %s. That placeholder is replaced with the lines in the failure message joined with the string specified in join_with. The resulting script should print the failure message and exit with non-zero status. | String | required | | +| escape_chars_with | Dictionary of characters that need escaping in test failure message to prefix appended to escape those characters. For example, `{"%": "%", ">": "^"}` would replace `%` with `%%` and `>` with `^>` in the failure message before that is included in `success_templ`. | Dictionary: String -> String | optional | `{}` | +| escape_other_chars_with | String to prefix every character in test failure message which is not a key in `escape_chars_with` before including that in `success_templ`. For example, `""` would prefix every character in the failure message (except those in the keys of `escape_chars_with`) with `\`. | String | optional | `""` | +| failure_templ | Test script template with a single `%s`. That placeholder is replaced with the lines in the failure message joined with the string specified in `join_with`. The resulting script should print the failure message and exit with non-zero status. | String | required | | | file_ext | File extension for test script, including leading dot. | String | required | | -| join_on | String used to join the lines in the failure message before including the resulting string in the script specified in failure_templ. | String | required | | +| join_on | String used to join the lines in the failure message before including the resulting string in the script specified in `failure_templ`. | String | required | | | success_templ | Test script generated when the test passes. Should exit with status 0. | String | required | | - - -## analysistest.make - -
-analysistest.make(impl, expect_failure, attrs, fragments, config_settings,
-                  extra_target_under_test_aspects, doc)
-
- -Creates an analysis test rule from its implementation function. - -An analysis test verifies the behavior of a "real" rule target by examining -and asserting on the providers given by the real target. - -Each analysis test is defined in an implementation function that must then be -associated with a rule so that a target can be built. This function handles -the boilerplate to create and return a test rule and captures the -implementation function's name so that it can be printed in test feedback. - -An example of an analysis test: - -``` -def _your_test(ctx): - env = analysistest.begin(ctx) - - # Assert statements go here - - return analysistest.end(env) - -your_test = analysistest.make(_your_test) -``` - -Recall that names of test rules must end in `_test`. - - -**PARAMETERS** - - -| Name | Description | Default Value | -| :------------- | :------------- | :------------- | -| impl | The implementation function of the unit test. | none | -| expect_failure | If true, the analysis test will expect the target_under_test to fail. Assertions can be made on the underlying failure using asserts.expect_failure | False | -| attrs | An optional dictionary to supplement the attrs passed to the unit test's rule() constructor. | {} | -| fragments | An optional list of fragment names that can be used to give rules access to language-specific parts of configuration. | [] | -| config_settings | A dictionary of configuration settings to change for the target under test and its dependencies. This may be used to essentially change 'build flags' for the target under test, and may thus be utilized to test multiple targets with different flags in a single build | {} | -| extra_target_under_test_aspects | An optional list of aspects to apply to the target_under_test in addition to those set up by default for the test harness itself. | [] | -| doc | A description of the rule that can be extracted by documentation generating tools. | "" | - -**RETURNS** - -A rule definition that should be stored in a global whose name ends in -`_test`. - - ## analysistest.begin @@ -116,7 +61,7 @@ test. | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| ctx | The Starlark context. Pass the implementation function's ctx argument in verbatim. | none | +| ctx | The Starlark context. Pass the implementation function's `ctx` argument in verbatim. | none | **RETURNS** @@ -144,7 +89,7 @@ that the results are reported. | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| env | The test environment returned by analysistest.begin. | none | +| env | The test environment returned by `analysistest.begin`. | none | **RETURNS** @@ -166,10 +111,64 @@ Unconditionally causes the current test to fail. | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| env | The test environment returned by unittest.begin. | none | +| env | The test environment returned by `unittest.begin`. | none | | msg | The message to log describing the failure. | none | + + +## analysistest.make + +
+analysistest.make(impl, expect_failure, attrs, fragments, config_settings,
+                  extra_target_under_test_aspects, doc)
+
+ +Creates an analysis test rule from its implementation function. + +An analysis test verifies the behavior of a "real" rule target by examining +and asserting on the providers given by the real target. + +Each analysis test is defined in an implementation function that must then be +associated with a rule so that a target can be built. This function handles +the boilerplate to create and return a test rule and captures the +implementation function's name so that it can be printed in test feedback. + +An example of an analysis test: + +``` +def _your_test(ctx): + env = analysistest.begin(ctx) + + # Assert statements go here + + return analysistest.end(env) + +your_test = analysistest.make(_your_test) +``` + +Recall that names of test rules must end in `_test`. + + +**PARAMETERS** + + +| Name | Description | Default Value | +| :------------- | :------------- | :------------- | +| impl | The implementation function of the unit test. | none | +| expect_failure | If true, the analysis test will expect the target_under_test to fail. Assertions can be made on the underlying failure using asserts.expect_failure | `False` | +| attrs | An optional dictionary to supplement the attrs passed to the unit test's `rule()` constructor. | `{}` | +| fragments | An optional list of fragment names that can be used to give rules access to language-specific parts of configuration. | `[]` | +| config_settings | A dictionary of configuration settings to change for the target under test and its dependencies. This may be used to essentially change 'build flags' for the target under test, and may thus be utilized to test multiple targets with different flags in a single build | `{}` | +| extra_target_under_test_aspects | An optional list of aspects to apply to the target_under_test in addition to those set up by default for the test harness itself. | `[]` | +| doc | A description of the rule that can be extracted by documentation generating tools. | `""` | + +**RETURNS** + +A rule definition that should be stored in a global whose name ends in +`_test`. + + ## analysistest.target_actions @@ -185,7 +184,7 @@ Returns a list of actions registered by the target under test. | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| env | The test environment returned by analysistest.begin. | none | +| env | The test environment returned by `analysistest.begin`. | none | **RETURNS** @@ -207,7 +206,7 @@ Returns ctx.bin_dir.path for the target under test. | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| env | The test environment returned by analysistest.begin. | none | +| env | The test environment returned by `analysistest.begin`. | none | **RETURNS** @@ -229,13 +228,34 @@ Returns the target under test. | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| env | The test environment returned by analysistest.begin. | none | +| env | The test environment returned by `analysistest.begin`. | none | **RETURNS** The target under test. + + +## asserts.equals + +
+asserts.equals(env, expected, actual, msg)
+
+ +Asserts that the given `expected` and `actual` values are equal. + +**PARAMETERS** + + +| Name | Description | Default Value | +| :------------- | :------------- | :------------- | +| env | The test environment returned by `unittest.begin`. | none | +| expected | The expected value of some computation. | none | +| actual | The actual value returned by some computation. | none | +| msg | An optional message that will be printed that describes the failure. If omitted, a default will be used. | `None` | + + ## asserts.expect_failure @@ -255,49 +275,49 @@ This requires that the analysis test is created with `analysistest.make()` and | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| env | The test environment returned by analysistest.begin. | none | -| expected_failure_msg | The error message to expect as a result of analysis failures. | "" | +| env | The test environment returned by `analysistest.begin`. | none | +| expected_failure_msg | The error message to expect as a result of analysis failures. | `""` | - + -## asserts.equals +## asserts.false
-asserts.equals(env, expected, actual, msg)
+asserts.false(env, condition, msg)
 
-Asserts that the given `expected` and `actual` values are equal. +Asserts that the given `condition` is false. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| env | The test environment returned by unittest.begin. | none | -| expected | The expected value of some computation. | none | -| actual | The actual value returned by some computation. | none | -| msg | An optional message that will be printed that describes the failure. If omitted, a default will be used. | None | +| env | The test environment returned by `unittest.begin`. | none | +| condition | A value that will be evaluated in a Boolean context. | none | +| msg | An optional message that will be printed that describes the failure. If omitted, a default will be used. | `"Expected condition to be false, but was true."` | - + -## asserts.false +## asserts.new_set_equals
-asserts.false(env, condition, msg)
+asserts.new_set_equals(env, expected, actual, msg)
 
-Asserts that the given `condition` is false. +Asserts that the given `expected` and `actual` sets are equal. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| env | The test environment returned by unittest.begin. | none | -| condition | A value that will be evaluated in a Boolean context. | none | -| msg | An optional message that will be printed that describes the failure. If omitted, a default will be used. | "Expected condition to be false, but was true." | +| env | The test environment returned by `unittest.begin`. | none | +| expected | The expected set resulting from some computation. | none | +| actual | The actual set returned by some computation. | none | +| msg | An optional message that will be printed that describes the failure. If omitted, a default will be used. | `None` | @@ -315,51 +335,55 @@ Asserts that the given `expected` and `actual` sets are equal. | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| env | The test environment returned by unittest.begin. | none | +| env | The test environment returned by `unittest.begin`. | none | | expected | The expected set resulting from some computation. | none | | actual | The actual set returned by some computation. | none | -| msg | An optional message that will be printed that describes the failure. If omitted, a default will be used. | None | +| msg | An optional message that will be printed that describes the failure. If omitted, a default will be used. | `None` | - + -## asserts.new_set_equals +## asserts.true
-asserts.new_set_equals(env, expected, actual, msg)
+asserts.true(env, condition, msg)
 
-Asserts that the given `expected` and `actual` sets are equal. +Asserts that the given `condition` is true. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| env | The test environment returned by unittest.begin. | none | -| expected | The expected set resulting from some computation. | none | -| actual | The actual set returned by some computation. | none | -| msg | An optional message that will be printed that describes the failure. If omitted, a default will be used. | None | +| env | The test environment returned by `unittest.begin`. | none | +| condition | A value that will be evaluated in a Boolean context. | none | +| msg | An optional message that will be printed that describes the failure. If omitted, a default will be used. | `"Expected condition to be true, but was false."` | - + -## asserts.true +## loadingtest.equals
-asserts.true(env, condition, msg)
+loadingtest.equals(env, test_case, expected, actual)
 
-Asserts that the given `condition` is true. +Creates a test case for asserting state at LOADING phase. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| env | The test environment returned by unittest.begin. | none | -| condition | A value that will be evaluated in a Boolean context. | none | -| msg | An optional message that will be printed that describes the failure. If omitted, a default will be used. | "Expected condition to be true, but was false." | +| env | Loading test env created from loadingtest.make | none | +| test_case | Name of the test case | none | +| expected | Expected value to test | none | +| actual | Actual value received. | none | + +**RETURNS** + +None, creates test case @@ -384,41 +408,91 @@ Creates a loading phase test environment and test_suite. loading phase environment passed to other loadingtest functions - + -## loadingtest.equals +## register_unittest_toolchains
-loadingtest.equals(env, test_case, expected, actual)
+register_unittest_toolchains()
 
-Creates a test case for asserting state at LOADING phase. +Registers the toolchains for unittest users. + + + + + +## unittest.begin + +
+unittest.begin(ctx)
+
+ +Begins a unit test. + +This should be the first function called in a unit test implementation +function. It initializes a "test environment" that is used to collect +assertion failures so that they can be reported and logged at the end of the +test. + **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| env | Loading test env created from loadingtest.make | none | -| test_case | Name of the test case | none | -| expected | Expected value to test | none | -| actual | Actual value received. | none | +| ctx | The Starlark context. Pass the implementation function's `ctx` argument in verbatim. | none | **RETURNS** -None, creates test case +A test environment struct that must be passed to assertions and finally to +`unittest.end`. Do not rely on internal details about the fields in this +struct as it may change. - + -## register_unittest_toolchains +## unittest.end
-register_unittest_toolchains()
+unittest.end(env)
 
-Registers the toolchains for unittest users. +Ends a unit test and logs the results. + +This must be called and returned at the end of a unit test implementation function so +that the results are reported. + + +**PARAMETERS** + +| Name | Description | Default Value | +| :------------- | :------------- | :------------- | +| env | The test environment returned by `unittest.begin`. | none | + +**RETURNS** + +A list of providers needed to automatically register the test result. + + + + +## unittest.fail + +
+unittest.fail(env, msg)
+
+ +Unconditionally causes the current test to fail. + +**PARAMETERS** + + +| Name | Description | Default Value | +| :------------- | :------------- | :------------- | +| env | The test environment returned by `unittest.begin`. | none | +| msg | The message to log describing the failure. | none | @@ -464,9 +538,9 @@ Recall that names of test rules must end in `_test`. | Name | Description | Default Value | | :------------- | :------------- | :------------- | | impl | The implementation function of the unit test. | none | -| attrs | An optional dictionary to supplement the attrs passed to the unit test's rule() constructor. | {} | -| doc | A description of the rule that can be extracted by documentation generating tools. | "" | -| toolchains | An optional list to supplement the toolchains passed to the unit test's rule() constructor. | [] | +| attrs | An optional dictionary to supplement the attrs passed to the unit test's `rule()` constructor. | `{}` | +| doc | A description of the rule that can be extracted by documentation generating tools. | `""` | +| toolchains | An optional list to supplement the toolchains passed to the unit test's `rule()` constructor. | `[]` | **RETURNS** @@ -526,82 +600,7 @@ name each target. | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| name | The name of the test_suite target, and the prefix of all the test target names. | none | -| test_rules | A list of test rules defines by unittest.test. | none | - - - - -## unittest.begin - -
-unittest.begin(ctx)
-
- -Begins a unit test. - -This should be the first function called in a unit test implementation -function. It initializes a "test environment" that is used to collect -assertion failures so that they can be reported and logged at the end of the -test. - - -**PARAMETERS** - - -| Name | Description | Default Value | -| :------------- | :------------- | :------------- | -| ctx | The Starlark context. Pass the implementation function's ctx argument in verbatim. | none | - -**RETURNS** - -A test environment struct that must be passed to assertions and finally to -`unittest.end`. Do not rely on internal details about the fields in this -struct as it may change. - - - - -## unittest.end - -
-unittest.end(env)
-
- -Ends a unit test and logs the results. - -This must be called and returned at the end of a unit test implementation function so -that the results are reported. - - -**PARAMETERS** - - -| Name | Description | Default Value | -| :------------- | :------------- | :------------- | -| env | The test environment returned by unittest.begin. | none | - -**RETURNS** - -A list of providers needed to automatically register the test result. - - - - -## unittest.fail - -
-unittest.fail(env, msg)
-
- -Unconditionally causes the current test to fail. - -**PARAMETERS** - - -| Name | Description | Default Value | -| :------------- | :------------- | :------------- | -| env | The test environment returned by unittest.begin. | none | -| msg | The message to log describing the failure. | none | +| name | The name of the `test_suite` target, and the prefix of all the test target names. | none | +| test_rules | A list of test rules defines by `unittest.test`. | none | diff --git a/third_party/bazel-skylib/docs/versions_doc.md b/third_party/bazel-skylib/docs/versions_doc.md index 89867373..82bb79d1 100755 --- a/third_party/bazel-skylib/docs/versions_doc.md +++ b/third_party/bazel-skylib/docs/versions_doc.md @@ -2,64 +2,59 @@ Skylib module containing functions for checking Bazel versions. - + -## versions.get +## versions.check
-versions.get()
+versions.check(minimum_bazel_version, maximum_bazel_version, bazel_version)
 
-Returns the current Bazel version - - - - - -## versions.parse - -
-versions.parse(bazel_version)
-
+Check that the version of Bazel is valid within the specified range. -Parses a version string into a 3-tuple of ints +**PARAMETERS** -int tuples can be compared directly using binary operators (<, >). -For a development build of Bazel, this returns an unspecified version tuple -that compares higher than any released version. +| Name | Description | Default Value | +| :------------- | :------------- | :------------- | +| minimum_bazel_version | minimum version of Bazel expected | none | +| maximum_bazel_version | maximum version of Bazel expected | `None` | +| bazel_version | the version of Bazel to check. Used for testing, defaults to native.bazel_version | `None` | -**PARAMETERS** + +## versions.get -| Name | Description | Default Value | -| :------------- | :------------- | :------------- | -| bazel_version | the Bazel version string | none | +
+versions.get()
+
-**RETURNS** +Returns the current Bazel version -An int 3-tuple of a (major, minor, patch) version. - + -## versions.check +## versions.is_at_least
-versions.check(minimum_bazel_version, maximum_bazel_version, bazel_version)
+versions.is_at_least(threshold, version)
 
-Check that the version of Bazel is valid within the specified range. +Check that a version is higher or equals to a threshold. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| minimum_bazel_version | minimum version of Bazel expected | none | -| maximum_bazel_version | maximum version of Bazel expected | None | -| bazel_version | the version of Bazel to check. Used for testing, defaults to native.bazel_version | None | +| threshold | the minimum version string | none | +| version | the version string to be compared to the threshold | none | + +**RETURNS** + +True if version >= threshold. @@ -82,29 +77,34 @@ Check that a version is lower or equals to a threshold. **RETURNS** -True if version <= threshold. +True if version <= threshold. - + -## versions.is_at_least +## versions.parse
-versions.is_at_least(threshold, version)
+versions.parse(bazel_version)
 
-Check that a version is higher or equals to a threshold. +Parses a version string into a 3-tuple of ints + +int tuples can be compared directly using binary operators (<, >). + +For a development build of Bazel, this returns an unspecified version tuple +that compares higher than any released version. + **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | -| threshold | the minimum version string | none | -| version | the version string to be compared to the threshold | none | +| bazel_version | the Bazel version string | none | **RETURNS** -True if version >= threshold. +An int 3-tuple of a (major, minor, patch) version. diff --git a/third_party/bazel-skylib/docs/write_file_doc.md b/third_party/bazel-skylib/docs/write_file_doc.md index e7c99f64..2873ccb8 100755 --- a/third_party/bazel-skylib/docs/write_file_doc.md +++ b/third_party/bazel-skylib/docs/write_file_doc.md @@ -9,7 +9,6 @@ The rules generated by the macro do not use Bash or any other shell to write the file. Instead they use Starlark's built-in file writing action (ctx.actions.write). - ## write_file @@ -27,9 +26,9 @@ Creates a UTF-8 encoded text file. | :------------- | :------------- | :------------- | | name | Name of the rule. | none | | out | Path of the output file, relative to this package. | none | -| content | A list of strings. Lines of text, the contents of the file. Newlines are added automatically after every line except the last one. | [] | -| is_executable | A boolean. Whether to make the output file executable. When True, the rule's output can be executed using bazel run and can be in the srcs of binary and test rules that require executable sources. | False | -| newline | one of ["auto", "unix", "windows"]: line endings to use. "auto" for platform-determined, "unix" for LF, and "windows" for CRLF. | "auto" | -| kwargs | further keyword arguments, e.g. visibility | none | +| content | A list of strings. Lines of text, the contents of the file. Newlines are added automatically after every line except the last one. | `[]` | +| is_executable | A boolean. Whether to make the output file executable. When True, the rule's output can be executed using `bazel run` and can be in the srcs of binary and test rules that require executable sources. | `False` | +| newline | one of ["auto", "unix", "windows"]: line endings to use. "auto" for platform-determined, "unix" for LF, and "windows" for CRLF. | `"auto"` | +| kwargs | further keyword arguments, e.g. `visibility` | none | diff --git a/third_party/bazel-skylib/gazelle/BUILD b/third_party/bazel-skylib/gazelle/BUILD index d1c6daae..8f1636fc 100644 --- a/third_party/bazel-skylib/gazelle/BUILD +++ b/third_party/bazel-skylib/gazelle/BUILD @@ -1,4 +1,15 @@ load("@bazel_skylib//:bzl_library.bzl", "bzl_library") +load("@rules_license//rules:license.bzl", "license") + +package(default_applicable_licenses = ["//:license"]) + +license( + name = "license", + package_name = "bazelbuild/bazel_skylib_gazelle_module", + license_kinds = ["@rules_license//licenses/spdx:Apache-2.0"], +) + +licenses(["notice"]) exports_files(["WORKSPACE.bzlmod"]) diff --git a/third_party/bazel-skylib/gazelle/MODULE.bazel b/third_party/bazel-skylib/gazelle/MODULE.bazel index 7afa2420..6b814056 100644 --- a/third_party/bazel-skylib/gazelle/MODULE.bazel +++ b/third_party/bazel-skylib/gazelle/MODULE.bazel @@ -1,12 +1,13 @@ module( name = "bazel_skylib_gazelle_plugin", # Keep in sync with @bazel_skylib//:MODULE.bazel and @bazel_skylib//:version.bzl - version = "1.5.0", + version = "1.6.1", compatibility_level = 1, ) # Keep in sync with @bazel_skylib//:MODULE.bazel and @bazel_skylib//:version.bzl -bazel_dep(name = "bazel_skylib", version = "1.4.2") +bazel_dep(name = "bazel_skylib", version = "1.6.1") +bazel_dep(name = "rules_license", version = "0.0.7") bazel_dep(name = "gazelle", version = "0.29.0", repo_name = "bazel_gazelle") bazel_dep(name = "rules_go", version = "0.41.0", repo_name = "io_bazel_rules_go") diff --git a/third_party/bazel-skylib/gazelle/bzl/BUILD b/third_party/bazel-skylib/gazelle/bzl/BUILD index 0b8e6d35..c32236ea 100644 --- a/third_party/bazel-skylib/gazelle/bzl/BUILD +++ b/third_party/bazel-skylib/gazelle/bzl/BUILD @@ -1,6 +1,8 @@ load("@bazel_gazelle//:def.bzl", "gazelle", "gazelle_binary") load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") +package(default_applicable_licenses = ["//:license"]) + # gazelle:exclude testdata go_library( diff --git a/third_party/bazel-skylib/gazelle/workspace.bzl b/third_party/bazel-skylib/gazelle/workspace.bzl index 0eca993f..4f18eb5c 100644 --- a/third_party/bazel-skylib/gazelle/workspace.bzl +++ b/third_party/bazel-skylib/gazelle/workspace.bzl @@ -22,6 +22,16 @@ def bazel_skylib_gazelle_plugin_workspace(): """Loads dependencies required to use skylib's gazelle plugin""" bazel_skylib_workspace() + maybe( + http_archive, + name = "rules_license", + sha256 = "4531deccb913639c30e5c7512a054d5d875698daeb75d8cf90f284375fe7c360", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/rules_license/releases/download/0.0.7/rules_license-0.0.7.tar.gz", + "https://github.com/bazelbuild/rules_license/releases/download/0.0.7/rules_license-0.0.7.tar.gz", + ], + ) + maybe( http_archive, name = "io_bazel_rules_go", diff --git a/third_party/bazel-skylib/lib/BUILD b/third_party/bazel-skylib/lib/BUILD index 23280816..cff80659 100644 --- a/third_party/bazel-skylib/lib/BUILD +++ b/third_party/bazel-skylib/lib/BUILD @@ -1,8 +1,11 @@ load("//:bzl_library.bzl", "bzl_library") -licenses(["notice"]) +package( + default_applicable_licenses = ["//:license"], + default_visibility = ["//visibility:public"], +) -package(default_visibility = ["//visibility:public"]) +licenses(["notice"]) # export bzl files for the documentation exports_files( @@ -20,6 +23,11 @@ bzl_library( srcs = ["dicts.bzl"], ) +bzl_library( + name = "modules", + srcs = ["modules.bzl"], +) + bzl_library( name = "partial", srcs = ["partial.bzl"], diff --git a/third_party/bazel-skylib/lib/modules.bzl b/third_party/bazel-skylib/lib/modules.bzl new file mode 100644 index 00000000..61c8f87f --- /dev/null +++ b/third_party/bazel-skylib/lib/modules.bzl @@ -0,0 +1,120 @@ +# Copyright 2023 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Skylib module containing utilities for Bazel modules and module extensions.""" + +def _as_extension(macro, doc = None): + """Wraps a WORKSPACE dependency macro into a module extension. + + Example: + ```starlark + def rules_foo_deps(optional_arg = True): + some_repo_rule(name = "foobar") + http_archive(name = "bazqux") + + rules_foo_deps_ext = modules.as_extension(rules_foo_deps) + ``` + + Args: + macro: A [WORKSPACE dependency macro](https://bazel.build/rules/deploying#dependencies), i.e., + a function with no required parameters that instantiates one or more repository rules. + doc: A description of the module extension that can be extracted by documentation generating + tools. + + Returns: + A module extension that generates the repositories instantiated by the given macro and also + uses [`use_all_repos`](#use_all_repos) to indicate that all of those repositories should be + imported via `use_repo`. The extension is marked as reproducible if supported by the current + version of Bazel and thus doesn't result in a lockfile entry. + """ + + def _ext_impl(module_ctx): + macro() + + # Setting `reproducible` is safe since `macro`, as a function without parameters, must be + # deterministic. + return _use_all_repos(module_ctx, reproducible = True) + + kwargs = {} + if doc != None: + kwargs["doc"] = doc + + return module_extension( + implementation = _ext_impl, + **kwargs + ) + +def _use_all_repos(module_ctx, reproducible = False): + """Return from a module extension that should have all its repositories imported via `use_repo`. + + Example: + ```starlark + def _ext_impl(module_ctx): + some_repo_rule(name = "foobar") + http_archive(name = "bazqux") + return modules.use_all_repos(module_ctx) + + ext = module_extension(_ext_impl) + ``` + + Args: + module_ctx: The [`module_ctx`](https://bazel.build/rules/lib/builtins/module_ctx) object + passed to the module extension's implementation function. + reproducible: The value of the `reproducible` parameter to pass to the + [`extension_metadata`](https://bazel.build/rules/lib/builtins/extension_metadata.html) + object returned by this function. This is safe to set with Bazel versions that don't + support this parameter and will be ignored in that case. + + Returns: + An [`extension_metadata`](https://bazel.build/rules/lib/builtins/extension_metadata.html) + object that, when returned from a module extension implementation function, specifies that all + repositories generated by this extension should be imported via `use_repo`. If the current + version of Bazel doesn't support `extension_metadata`, returns `None` instead, which can + safely be returned from a module extension implementation function in all versions of Bazel. + """ + + # module_ctx.extension_metadata is available in Bazel 6.2.0 and later. + # If not available, returning None from a module extension is equivalent to not returning + # anything. + extension_metadata = getattr(module_ctx, "extension_metadata", None) + if not extension_metadata: + return None + + # module_ctx.root_module_has_non_dev_dependency is available in Bazel 6.3.0 and later. + root_module_has_non_dev_dependency = getattr( + module_ctx, + "root_module_has_non_dev_dependency", + None, + ) + if root_module_has_non_dev_dependency == None: + return None + + # module_ctx.extension_metadata has the paramater `reproducible` as of Bazel 7.1.0. We can't + # test for it directly and would ideally use bazel_features to check for it, but adding a + # dependency on it would require complicating the WORKSPACE setup for skylib. Thus, test for + # it by checking the availability of another feature introduced in 7.1.0. + extension_metadata_kwargs = {} + if hasattr(module_ctx, "watch"): + extension_metadata_kwargs["reproducible"] = reproducible + + return extension_metadata( + root_module_direct_deps = "all" if root_module_has_non_dev_dependency else [], + root_module_direct_dev_deps = [] if root_module_has_non_dev_dependency else "all", + **extension_metadata_kwargs + ) + +modules = struct( + as_extension = _as_extension, + use_all_repos = _use_all_repos, +) diff --git a/third_party/bazel-skylib/rules/BUILD b/third_party/bazel-skylib/rules/BUILD index 3a06554c..11706e4b 100644 --- a/third_party/bazel-skylib/rules/BUILD +++ b/third_party/bazel-skylib/rules/BUILD @@ -1,8 +1,11 @@ load("//:bzl_library.bzl", "bzl_library") -licenses(["notice"]) +package( + default_applicable_licenses = ["//:license"], + default_visibility = ["//visibility:public"], +) -package(default_visibility = ["//visibility:public"]) +licenses(["notice"]) bzl_library( name = "analysis_test", diff --git a/third_party/bazel-skylib/rules/native_binary.bzl b/third_party/bazel-skylib/rules/native_binary.bzl index b33347b3..7b1483ab 100644 --- a/third_party/bazel-skylib/rules/native_binary.bzl +++ b/third_party/bazel-skylib/rules/native_binary.bzl @@ -21,7 +21,7 @@ don't depend on Bash and work with --shell_executable="". """ def _impl_rule(ctx): - out = ctx.actions.declare_file(ctx.attr.out) + out = ctx.actions.declare_file(ctx.attr.out if (ctx.attr.out != "") else ctx.attr.name + ".exe") ctx.actions.symlink( target_file = ctx.executable.src, output = out, @@ -64,7 +64,12 @@ _ATTRS = { " https://bazel.build/reference/be/common-definitions#typical.data", ), # "out" is attr.string instead of attr.output, so that it is select()'able. - "out": attr.string(mandatory = True, doc = "An output name for the copy of the binary"), + "out": attr.string( + default = "", + doc = "An output name for the copy of the binary. Defaults to " + + "name.exe. (We add .exe to the name by default because it's " + + "required on Windows and tolerated on other platforms.)", + ), } native_binary = rule( diff --git a/third_party/bazel-skylib/rules/private/BUILD b/third_party/bazel-skylib/rules/private/BUILD index 7bd36520..b6a935d7 100644 --- a/third_party/bazel-skylib/rules/private/BUILD +++ b/third_party/bazel-skylib/rules/private/BUILD @@ -1,5 +1,7 @@ load("//:bzl_library.bzl", "bzl_library") +package(default_applicable_licenses = ["//:license"]) + licenses(["notice"]) bzl_library( diff --git a/third_party/bazel-skylib/rules/run_binary.bzl b/third_party/bazel-skylib/rules/run_binary.bzl index 7701fa0d..82d6330d 100644 --- a/third_party/bazel-skylib/rules/run_binary.bzl +++ b/third_party/bazel-skylib/rules/run_binary.bzl @@ -20,10 +20,10 @@ Runs a binary as a build action. This rule does not require Bash (unlike native. load("//lib:dicts.bzl", "dicts") -def _impl(ctx): +def _run_binary_impl(ctx): tool_as_list = [ctx.attr.tool] args = [ - # Expand $(location) / $(locations) in args. + # Expand $(execpath ...) / $(execpaths ...) / $(location ...) / $(locations ...) in args. # # To keep the rule simple, do not expand Make Variables (like *_binary.args usually would). # (We can add this feature later if users ask for it.) @@ -33,12 +33,12 @@ def _impl(ctx): # tokenization they would have to write args=["'a b'"] or args=["a\\ b"]. There's no # documented tokenization function anyway (as of 2019-05-21 ctx.tokenize exists but is # undocumented, see https://github.com/bazelbuild/bazel/issues/8389). - ctx.expand_location(a, tool_as_list) if "$(location" in a else a + ctx.expand_location(a, tool_as_list) for a in ctx.attr.args ] envs = { - # Expand $(location) / $(locations) in the values. - k: ctx.expand_location(v, tool_as_list) if "$(location" in v else v + # Expand $(execpath ...) / $(execpaths ...) / $(location ...) / $(locations ...) in the values. + k: ctx.expand_location(v, tool_as_list) for k, v in ctx.attr.env.items() } ctx.actions.run( @@ -57,7 +57,7 @@ def _impl(ctx): ) run_binary = rule( - implementation = _impl, + implementation = _run_binary_impl, doc = "Runs a binary as a build action.\n\nThis rule does not require Bash (unlike" + " `native.genrule`).", attrs = { @@ -66,7 +66,7 @@ run_binary = rule( " of a rule that generates an executable file, or of a file that can be" + " executed as a subprocess (e.g. an .exe or .bat file on Windows or a binary" + " with executable permission on Linux). This label is available for" + - " `$(location)` expansion in `args` and `env`.", + " `$(execpath)` and `$(location)` expansion in `args` and `env`.", executable = True, allow_files = True, mandatory = True, @@ -74,22 +74,22 @@ run_binary = rule( ), "env": attr.string_dict( doc = "Environment variables of the action.\n\nSubject to " + - " [`$(location)`](https://bazel.build/reference/be/make-variables#predefined_label_variables)" + + " [`$(execpath)` and `$(location)`](https://bazel.build/reference/be/make-variables#predefined_label_variables)" + " expansion.", ), "srcs": attr.label_list( allow_files = True, doc = "Additional inputs of the action.\n\nThese labels are available for" + - " `$(location)` expansion in `args` and `env`.", + " `$(execpath)` and `$(location)` expansion in `args` and `env`.", ), "outs": attr.output_list( mandatory = True, doc = "Output files generated by the action.\n\nThese labels are available for" + - " `$(location)` expansion in `args` and `env`.", + " `$(execpath)` and `$(location)` expansion in `args` and `env`.", ), "args": attr.string_list( doc = "Command line arguments of the binary.\n\nSubject to" + - " [`$(location)`](https://bazel.build/reference/be/make-variables#predefined_label_variables)" + + " [`$(execpath)` and `$(location)`](https://bazel.build/reference/be/make-variables#predefined_label_variables)" + " expansion.", ), }, diff --git a/third_party/bazel-skylib/tests/BUILD b/third_party/bazel-skylib/tests/BUILD index 7f056d2b..7d978cb2 100644 --- a/third_party/bazel-skylib/tests/BUILD +++ b/third_party/bazel-skylib/tests/BUILD @@ -3,6 +3,7 @@ load(":build_test_tests.bzl", "build_test_test_suite") load(":collections_tests.bzl", "collections_test_suite") load(":common_settings_tests.bzl", "common_settings_test_suite") load(":dicts_tests.bzl", "dicts_test_suite") +load(":modules_test.bzl", "modules_test_suite") load(":new_sets_tests.bzl", "new_sets_test_suite") load(":partial_tests.bzl", "partial_test_suite") load(":paths_tests.bzl", "paths_test_suite") @@ -14,6 +15,11 @@ load(":types_tests.bzl", "types_test_suite") load(":unittest_tests.bzl", "unittest_passing_tests_suite") load(":versions_tests.bzl", "versions_test_suite") +package( + default_applicable_licenses = ["//:license"], + default_testonly = 1, +) + licenses(["notice"]) exports_files( @@ -29,6 +35,8 @@ common_settings_test_suite() dicts_test_suite() +modules_test_suite() + new_sets_test_suite() partial_test_suite() diff --git a/third_party/bazel-skylib/tests/build_test_tests.bzl b/third_party/bazel-skylib/tests/build_test_tests.bzl index 4d3dfb6a..9fbe89b1 100644 --- a/third_party/bazel-skylib/tests/build_test_tests.bzl +++ b/third_party/bazel-skylib/tests/build_test_tests.bzl @@ -14,7 +14,6 @@ """Unit tests for build_test.bzl.""" -load("@rules_cc//cc:defs.bzl", "cc_library") load("//rules:build_test.bzl", "build_test") # buildifier: disable=unnamed-macro @@ -31,7 +30,7 @@ def build_test_test_suite(): ) # Use it in a non-test target - cc_library( + native.cc_library( name = "build_test__build_target", srcs = [":build_test__make_src"], ) diff --git a/third_party/bazel-skylib/tests/bzl_library/BUILD b/third_party/bazel-skylib/tests/bzl_library/BUILD new file mode 100644 index 00000000..0ed2e5a8 --- /dev/null +++ b/third_party/bazel-skylib/tests/bzl_library/BUILD @@ -0,0 +1,39 @@ +load("//:bzl_library.bzl", "bzl_library") +load(":bzl_library_test.bzl", "bzl_library_test") + +package( + default_applicable_licenses = ["//:license"], + default_testonly = 1, +) + +licenses(["notice"]) + +filegroup( + name = "a", + srcs = ["testdata/a.bzl"], +) + +bzl_library( + name = "b", + srcs = ["testdata/b.bzl"], +) + +bzl_library( + name = "c", + srcs = ["testdata/c.bzl"], + deps = [ + ":a", + ":b", + ], +) + +bzl_library_test( + name = "bzl_library_test", + expected_srcs = ["testdata/c.bzl"], + expected_transitive_srcs = [ + "testdata/a.bzl", + "testdata/b.bzl", + "testdata/c.bzl", + ], + target_under_test = ":c", +) diff --git a/third_party/bazel-skylib/tests/bzl_library/bzl_library_test.bzl b/third_party/bazel-skylib/tests/bzl_library/bzl_library_test.bzl new file mode 100644 index 00000000..64d06dc7 --- /dev/null +++ b/third_party/bazel-skylib/tests/bzl_library/bzl_library_test.bzl @@ -0,0 +1,54 @@ +# Copyright 2024 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Unit tests for bzl_library""" + +load("//:bzl_library.bzl", "StarlarkLibraryInfo") +load("//lib:sets.bzl", "sets") +load("//lib:unittest.bzl", "analysistest", "asserts") + +def _assert_same_files(env, expected_file_targets, actual_files): + """Assertion that a list of expected file targets and an actual list or depset of files contain the same files""" + expected_files = [] + for target in expected_file_targets: + target_files = target[DefaultInfo].files.to_list() + asserts.true(env, len(target_files) == 1, "expected_file_targets must contain only file targets") + expected_files.append(target_files[0]) + if type(actual_files) == "depset": + actual_files = actual_files.to_list() + asserts.set_equals(env = env, expected = sets.make(expected_files), actual = sets.make(actual_files)) + +def _bzl_library_test_impl(ctx): + env = analysistest.begin(ctx) + target_under_test = analysistest.target_under_test(env) + _assert_same_files(env, ctx.attr.expected_srcs, target_under_test[StarlarkLibraryInfo].srcs) + _assert_same_files(env, ctx.attr.expected_transitive_srcs, target_under_test[StarlarkLibraryInfo].transitive_srcs) + _assert_same_files(env, ctx.attr.expected_transitive_srcs, target_under_test[DefaultInfo].files) + return analysistest.end(env) + +bzl_library_test = analysistest.make( + impl = _bzl_library_test_impl, + attrs = { + "expected_srcs": attr.label_list( + mandatory = True, + allow_files = True, + doc = "Expected direct srcs in target_under_test's providers", + ), + "expected_transitive_srcs": attr.label_list( + mandatory = True, + allow_files = True, + doc = "Expected transitive srcs in target_under_test's providers", + ), + }, +) diff --git a/third_party/bazel-skylib/tests/bzl_library/testdata/a.bzl b/third_party/bazel-skylib/tests/bzl_library/testdata/a.bzl new file mode 100644 index 00000000..01be5e09 --- /dev/null +++ b/third_party/bazel-skylib/tests/bzl_library/testdata/a.bzl @@ -0,0 +1,3 @@ +"""a.bzl, livin' its best life""" + +A = 30 diff --git a/third_party/bazel-skylib/tests/bzl_library/testdata/b.bzl b/third_party/bazel-skylib/tests/bzl_library/testdata/b.bzl new file mode 100644 index 00000000..254ca450 --- /dev/null +++ b/third_party/bazel-skylib/tests/bzl_library/testdata/b.bzl @@ -0,0 +1,3 @@ +"""b.bzl, havin' a grand time""" + +B = 70 diff --git a/third_party/bazel-skylib/tests/bzl_library/testdata/c.bzl b/third_party/bazel-skylib/tests/bzl_library/testdata/c.bzl new file mode 100644 index 00000000..c1fbba72 --- /dev/null +++ b/third_party/bazel-skylib/tests/bzl_library/testdata/c.bzl @@ -0,0 +1,6 @@ +"""c.bzl, standin' on the shoulder of giants""" + +load(":testdata/a.bzl", "A") +load(":testdata/b.bzl", "B") + +C = A + B diff --git a/third_party/bazel-skylib/tests/common_settings/BUILD b/third_party/bazel-skylib/tests/common_settings/BUILD index 606a4f64..ef70746e 100644 --- a/third_party/bazel-skylib/tests/common_settings/BUILD +++ b/third_party/bazel-skylib/tests/common_settings/BUILD @@ -1,8 +1,11 @@ load("//rules:common_settings.bzl", "int_flag", "string_flag") -licenses(["notice"]) +package( + default_applicable_licenses = ["//:license"], + default_testonly = 1, +) -package(default_testonly = 1) +licenses(["notice"]) int_flag( name = "my_int_flag", diff --git a/third_party/bazel-skylib/tests/copy_directory/BUILD.bazel b/third_party/bazel-skylib/tests/copy_directory/BUILD.bazel index f766e99f..bd4fa8f9 100644 --- a/third_party/bazel-skylib/tests/copy_directory/BUILD.bazel +++ b/third_party/bazel-skylib/tests/copy_directory/BUILD.bazel @@ -3,9 +3,12 @@ load("//rules:copy_directory.bzl", "copy_directory") load(":empty_directory.bzl", "empty_directory") -licenses(["notice"]) +package( + default_applicable_licenses = ["//:license"], + default_testonly = 1, +) -package(default_testonly = 1) +licenses(["notice"]) # Copy of directory containing files a and b, and a subdir containing c copy_directory( diff --git a/third_party/bazel-skylib/tests/copy_file/BUILD b/third_party/bazel-skylib/tests/copy_file/BUILD index 2e6914ce..873f9664 100644 --- a/third_party/bazel-skylib/tests/copy_file/BUILD +++ b/third_party/bazel-skylib/tests/copy_file/BUILD @@ -33,9 +33,12 @@ load("//rules:copy_file.bzl", "copy_file") -licenses(["notice"]) +package( + default_applicable_licenses = ["//:license"], + default_testonly = 1, +) -package(default_testonly = 1) +licenses(["notice"]) sh_test( name = "copy_file_tests", diff --git a/third_party/bazel-skylib/tests/diff_test/BUILD b/third_party/bazel-skylib/tests/diff_test/BUILD index aa381d85..0aec12b1 100644 --- a/third_party/bazel-skylib/tests/diff_test/BUILD +++ b/third_party/bazel-skylib/tests/diff_test/BUILD @@ -2,9 +2,12 @@ load("//rules:diff_test.bzl", "diff_test") -licenses(["notice"]) +package( + default_applicable_licenses = ["//:license"], + default_testonly = 1, +) -package(default_testonly = 1) +licenses(["notice"]) sh_test( name = "diff_test_tests", diff --git a/third_party/bazel-skylib/tests/expand_template/BUILD b/third_party/bazel-skylib/tests/expand_template/BUILD index 06071115..07fc5797 100644 --- a/third_party/bazel-skylib/tests/expand_template/BUILD +++ b/third_party/bazel-skylib/tests/expand_template/BUILD @@ -16,6 +16,11 @@ load("//rules:expand_template.bzl", "expand_template") +package( + default_applicable_licenses = ["//:license"], + default_testonly = 1, +) + expand_template( name = "filled_template", out = "foo/test.yaml", diff --git a/third_party/bazel-skylib/tests/modules_test.bzl b/third_party/bazel-skylib/tests/modules_test.bzl new file mode 100644 index 00000000..0887463c --- /dev/null +++ b/third_party/bazel-skylib/tests/modules_test.bzl @@ -0,0 +1,70 @@ +# Copyright 2017 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Test usage of modules.bzl.""" + +load("//lib:modules.bzl", "modules") +load("//rules:build_test.bzl", "build_test") + +def _repo_rule_impl(repository_ctx): + repository_ctx.file("WORKSPACE") + repository_ctx.file("BUILD", """exports_files(["hello"])""") + repository_ctx.file("hello", "Hello, Bzlmod!") + +_repo_rule = repository_rule(_repo_rule_impl) + +def _workspace_macro(register_toolchains = False): + _repo_rule(name = "foo") + _repo_rule(name = "bar") + if register_toolchains: + native.register_toolchains() + +as_extension_test_ext = modules.as_extension( + _workspace_macro, + doc = "Only used for testing modules.as_extension().", +) + +def _use_all_repos_ext_impl(module_ctx): + _repo_rule(name = "baz") + _repo_rule(name = "qux") + return modules.use_all_repos(module_ctx) + +use_all_repos_test_ext = module_extension( + _use_all_repos_ext_impl, + doc = "Only used for testing modules.use_all_repos().", +) + +# buildifier: disable=unnamed-macro +def modules_test_suite(): + """Creates the tests for modules.bzl if Bzlmod is enabled.""" + + is_bzlmod_enabled = str(Label("//tests:module_tests.bzl")).startswith("@@") + if not is_bzlmod_enabled: + return + + build_test( + name = "modules_as_extension_test", + targets = [ + "@foo//:hello", + "@bar//:hello", + ], + ) + + build_test( + name = "modules_use_all_repos_test", + targets = [ + "@baz//:hello", + "@qux//:hello", + ], + ) diff --git a/third_party/bazel-skylib/tests/native_binary/BUILD b/third_party/bazel-skylib/tests/native_binary/BUILD index 997270f6..5ec2d54a 100644 --- a/third_party/bazel-skylib/tests/native_binary/BUILD +++ b/third_party/bazel-skylib/tests/native_binary/BUILD @@ -1,8 +1,8 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") load("//rules:copy_file.bzl", "copy_file") load("//rules:native_binary.bzl", "native_binary", "native_test") package( + default_applicable_licenses = ["//:license"], default_testonly = 1, default_visibility = ["//visibility:private"], ) @@ -97,6 +97,12 @@ native_binary( data = ["testdata.txt"], ) +native_binary( + name = "no_out_bin", + src = ":copy_assertdata_exe", + data = ["testdata.txt"], +) + native_test( name = "data_test", src = ":copy_assertdata_exe", diff --git a/third_party/bazel-skylib/tests/run_binary/BUILD b/third_party/bazel-skylib/tests/run_binary/BUILD index 259c84a3..0d5b5acf 100644 --- a/third_party/bazel-skylib/tests/run_binary/BUILD +++ b/third_party/bazel-skylib/tests/run_binary/BUILD @@ -1,9 +1,9 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") load("//rules:diff_test.bzl", "diff_test") load("//rules:run_binary.bzl", "run_binary") load("//rules:write_file.bzl", "write_file") package( + default_applicable_licenses = ["//:license"], default_testonly = 1, default_visibility = ["//visibility:private"], ) @@ -25,6 +25,8 @@ write_file( "arg2=(bar)", "ENV_LOCATION=(a tests/run_binary/BUILD)", "ENV_LOCATIONS=(b\\ tests/run_binary/BUILD tests/run_binary/printargs.cc)", + "ENV_EXECPATH=(a tests/run_binary/BUILD)", + "ENV_EXECPATHS=(b\\ tests/run_binary/BUILD tests/run_binary/printargs.cc)", "ENV_COMPLEX=(xx/yy \\\"zz)", "ENV_PATH_BASH=($PATH)", "ENV_PATH_CMD=(%PATH%)", @@ -52,12 +54,14 @@ run_binary( # Bash-tokenized, and should appear the same for Windows .bat files and Bash # .sh scripts. env = { + "ENV_COMPLEX": "xx/yy \\\"zz", + "ENV_EXECPATH": "a $(execpath BUILD)", + "ENV_EXECPATHS": "b\\ $(execpaths :dummy_srcs)", # Testing $(location) expansion only on source files so the result is # predictable. The path of generated files depends on the target # platform. "ENV_LOCATION": "a $(location BUILD)", "ENV_LOCATIONS": "b\\ $(locations :dummy_srcs)", - "ENV_COMPLEX": "xx/yy \\\"zz", "ENV_PATH_BASH": "$PATH", "ENV_PATH_CMD": "%PATH%", "OUT": "$(location run_script.out)", @@ -77,6 +81,8 @@ write_file( "@echo>>%OUT% arg2=(%2)", "@echo>>%OUT% ENV_LOCATION=(%ENV_LOCATION%)", "@echo>>%OUT% ENV_LOCATIONS=(%ENV_LOCATIONS%)", + "@echo>>%OUT% ENV_EXECPATH=(%ENV_EXECPATH%)", + "@echo>>%OUT% ENV_EXECPATHS=(%ENV_EXECPATHS%)", "@echo>>%OUT% ENV_COMPLEX=(%ENV_COMPLEX%)", "@echo>>%OUT% ENV_PATH_BASH=(%ENV_PATH_BASH%)", "@echo>>%OUT% ENV_PATH_CMD=(%ENV_PATH_CMD%)", @@ -87,6 +93,8 @@ write_file( "echo >> \"$OUT\" \"arg2=($2)\"", "echo >> \"$OUT\" \"ENV_LOCATION=($ENV_LOCATION)\"", "echo >> \"$OUT\" \"ENV_LOCATIONS=($ENV_LOCATIONS)\"", + "echo >> \"$OUT\" \"ENV_EXECPATH=($ENV_EXECPATH)\"", + "echo >> \"$OUT\" \"ENV_EXECPATHS=($ENV_EXECPATHS)\"", "echo >> \"$OUT\" \"ENV_COMPLEX=($ENV_COMPLEX)\"", "echo >> \"$OUT\" \"ENV_PATH_BASH=($ENV_PATH_BASH)\"", "echo >> \"$OUT\" \"ENV_PATH_CMD=($ENV_PATH_CMD)\"", @@ -115,9 +123,13 @@ write_file( "arg5=(tests/run_binary/BUILD)", "arg6=(tests/run_binary/BUILD tests/run_binary/printargs.cc)", "arg7=('tests/run_binary/BUILD $tests/run_binary/BUILD')", - "arg8=($PATH)", - "arg9=($$PATH)", - "arg10=(${PATH})", + "arg8=(tests/run_binary/BUILD)", + "arg9=(tests/run_binary/BUILD tests/run_binary/printargs.cc)", + "arg10=('tests/run_binary/BUILD $tests/run_binary/BUILD')", + "arg11=($PATH)", + "arg12=($$PATH)", + "arg13=(${PATH})", + "arg14=($(echo hello))", # Add trailing newline, as printed by printargs. "", ], @@ -137,15 +149,20 @@ run_binary( "\"c d\"", "e\\ f", "xx/yy\\ \\\"zz", - # Testing $(location) expansion only on source files so the result is + # Testing $(execpath) expansion only on source files so the result is # predictable. The path of generated files depends on the target # platform. + "$(execpath BUILD)", + "$(execpaths :dummy_srcs)", + "'$(execpath BUILD) $$(execpath BUILD)'", + # Test the legacy 'location' expansions "$(location BUILD)", "$(locations :dummy_srcs)", "'$(location BUILD) $$(location BUILD)'", "$PATH", "$$PATH", "${PATH}", + "$(echo hello)", ], # Not testing any complex envvars here, because we already did in # "run_script". diff --git a/third_party/bazel-skylib/tests/select_file/BUILD b/third_party/bazel-skylib/tests/select_file/BUILD index a91c2310..be844e27 100644 --- a/third_party/bazel-skylib/tests/select_file/BUILD +++ b/third_party/bazel-skylib/tests/select_file/BUILD @@ -1,6 +1,11 @@ load("//rules:diff_test.bzl", "diff_test") load("//rules:select_file.bzl", "select_file") +package( + default_applicable_licenses = ["//:license"], + default_testonly = 1, +) + licenses(["notice"]) filegroup( diff --git a/third_party/bazel-skylib/tests/subpackages_tests.bzl b/third_party/bazel-skylib/tests/subpackages_tests.bzl index 3c494d68..885d4724 100644 --- a/third_party/bazel-skylib/tests/subpackages_tests.bzl +++ b/third_party/bazel-skylib/tests/subpackages_tests.bzl @@ -21,6 +21,7 @@ def _all_test(env): """Unit tests for subpackages.all.""" all_pkgs = [ + "bzl_library", "common_settings", "copy_directory", "copy_file", @@ -39,6 +40,7 @@ def _all_test(env): # These exist in all cases filtered_pkgs = [ + "bzl_library", "common_settings", "copy_directory", "copy_file", diff --git a/third_party/bazel-skylib/tests/unittest_test.sh b/third_party/bazel-skylib/tests/unittest_test.sh index c773d70d..271f1563 100755 --- a/third_party/bazel-skylib/tests/unittest_test.sh +++ b/third_party/bazel-skylib/tests/unittest_test.sh @@ -79,7 +79,10 @@ EOF ln -sf "$(rlocation $TEST_WORKSPACE/lib/unittest.bzl)" lib/unittest.bzl mkdir -p toolchains/unittest - ln -sf "$(rlocation $TEST_WORKSPACE/toolchains/unittest/BUILD)" toolchains/unittest/BUILD + # Remove `package(default_applicable_license = ...)` line to avoid depending on rules_license inside this test + sed -e '/package(default_applicable_licenses = .*)/d' \ + "$(rlocation $TEST_WORKSPACE/toolchains/unittest/BUILD)" \ + > toolchains/unittest/BUILD # Create test files. mkdir -p testdir diff --git a/third_party/bazel-skylib/tests/write_file/BUILD b/third_party/bazel-skylib/tests/write_file/BUILD index e4f2a942..513af20e 100644 --- a/third_party/bazel-skylib/tests/write_file/BUILD +++ b/third_party/bazel-skylib/tests/write_file/BUILD @@ -35,9 +35,12 @@ load("//rules:diff_test.bzl", "diff_test") load("//rules:write_file.bzl", "write_file") -licenses(["notice"]) +package( + default_applicable_licenses = ["//:license"], + default_testonly = 1, +) -package(default_testonly = 1) +licenses(["notice"]) sh_test( name = "write_file_tests", diff --git a/third_party/bazel-skylib/toolchains/unittest/BUILD b/third_party/bazel-skylib/toolchains/unittest/BUILD index dd23962a..275ddfcf 100644 --- a/third_party/bazel-skylib/toolchains/unittest/BUILD +++ b/third_party/bazel-skylib/toolchains/unittest/BUILD @@ -1,5 +1,7 @@ load("//lib:unittest.bzl", "TOOLCHAIN_TYPE", "unittest_toolchain") +package(default_applicable_licenses = ["//:license"]) + licenses(["notice"]) toolchain_type( diff --git a/third_party/bazel-skylib/version.bzl b/third_party/bazel-skylib/version.bzl index b004ba12..fa319a08 100644 --- a/third_party/bazel-skylib/version.bzl +++ b/third_party/bazel-skylib/version.bzl @@ -14,4 +14,4 @@ """The version of bazel-skylib.""" # Keep in sync with MODULE.bazel and @bazel_skylib_gazelle_plugin//:MODULE.bazel -version = "1.5.0" +version = "1.6.1" diff --git a/third_party/bazel-skylib/workspace.bzl b/third_party/bazel-skylib/workspace.bzl index 29fd1e35..0997ec32 100644 --- a/third_party/bazel-skylib/workspace.bzl +++ b/third_party/bazel-skylib/workspace.bzl @@ -15,7 +15,18 @@ """Dependency registration helpers for repositories which need to load bazel-skylib.""" load("@bazel_skylib//lib:unittest.bzl", "register_unittest_toolchains") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") def bazel_skylib_workspace(): """Registers toolchains and declares repository dependencies of the bazel_skylib repository.""" + maybe( + http_archive, + name = "rules_license", + sha256 = "4531deccb913639c30e5c7512a054d5d875698daeb75d8cf90f284375fe7c360", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/rules_license/releases/download/0.0.7/rules_license-0.0.7.tar.gz", + "https://github.com/bazelbuild/rules_license/releases/download/0.0.7/rules_license-0.0.7.tar.gz", + ], + ) register_unittest_toolchains() diff --git a/third_party/fmt/.github/workflows/cifuzz.yml b/third_party/fmt/.github/workflows/cifuzz.yml index b3a37c83..40394a96 100644 --- a/third_party/fmt/.github/workflows/cifuzz.yml +++ b/third_party/fmt/.github/workflows/cifuzz.yml @@ -23,7 +23,7 @@ jobs: dry-run: false language: c++ - name: Upload Crash - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 if: failure() && steps.build.outcome == 'success' with: name: artifacts diff --git a/third_party/fmt/.github/workflows/scorecard.yml b/third_party/fmt/.github/workflows/scorecard.yml index ccb30007..db75ed3c 100644 --- a/third_party/fmt/.github/workflows/scorecard.yml +++ b/third_party/fmt/.github/workflows/scorecard.yml @@ -52,7 +52,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: SARIF file path: results.sarif @@ -60,6 +60,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 + uses: github/codeql-action/upload-sarif@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 with: sarif_file: results.sarif diff --git a/third_party/fmt/doc/api.rst b/third_party/fmt/doc/api.rst index 0c594d9a..e132bd26 100644 --- a/third_party/fmt/doc/api.rst +++ b/third_party/fmt/doc/api.rst @@ -33,7 +33,14 @@ Base API for ``char``/UTF-8 with C++20 compile-time checks. It has minimal include dependencies for better compile times. This header is only beneficial when using {fmt} as a library (the default) and not in the header-only mode. -It also provides ``formatter`` specializations for built-in and string types. +It also provides ``formatter`` specializations for the following types: + +* ``int``, ``unsigned``, ``long long``, ``unsigned long long`` +* ``float``, ``double``, ``long double`` +* ``bool`` +* ``char`` +* ``const char*``, ``fmt::string_view`` +* ``const void*`` The following functions use :ref:`format string syntax ` similar to that of Python's `str.format @@ -66,7 +73,7 @@ specified otherwise. .. _format: -.. doxygenfunction:: format_to(OutputIt out, format_string fmt, T&&... args) -> OutputIt +.. doxygenfunction:: format_to(OutputIt&& out, format_string fmt, T&&... args) -> remove_cvref_t .. doxygenfunction:: format_to_n(OutputIt out, size_t n, format_string fmt, T&&... args) -> format_to_n_result .. doxygenfunction:: formatted_size(format_string fmt, T&&... args) -> size_t diff --git a/third_party/fmt/include/fmt/base.h b/third_party/fmt/include/fmt/base.h index 5acd3e64..772bc02a 100644 --- a/third_party/fmt/include/fmt/base.h +++ b/third_party/fmt/include/fmt/base.h @@ -1899,7 +1899,7 @@ template class basic_format_args { if (id < max_size()) arg = args_[id]; return arg; } - if (id >= detail::max_packed_args) return arg; + if (static_cast(id) >= detail::max_packed_args) return arg; arg.type_ = type(id); if (arg.type_ == detail::type::none_type) return arg; arg.value_ = values_[id]; diff --git a/third_party/fmt/include/fmt/format.h b/third_party/fmt/include/fmt/format.h index 884ba3b6..95df0ad0 100644 --- a/third_party/fmt/include/fmt/format.h +++ b/third_party/fmt/include/fmt/format.h @@ -2695,7 +2695,7 @@ FMT_CONSTEXPR20 auto write_float(OutputIt out, const DecimalFP& f, } template constexpr auto isnan(T value) -> bool { - return !(value >= value); // std::isnan doesn't support __float128. + return value != value; // std::isnan doesn't support __float128. } template @@ -4017,11 +4017,14 @@ FMT_FORMAT_AS(unsigned short, unsigned); FMT_FORMAT_AS(long, detail::long_type); FMT_FORMAT_AS(unsigned long, detail::ulong_type); FMT_FORMAT_AS(Char*, const Char*); -FMT_FORMAT_AS(std::basic_string, basic_string_view); FMT_FORMAT_AS(std::nullptr_t, const void*); FMT_FORMAT_AS(detail::std_string_view, basic_string_view); FMT_FORMAT_AS(void*, const void*); +template +class formatter, Char> + : public formatter, Char> {}; + template struct formatter : formatter, Char> {}; diff --git a/third_party/fmt/include/fmt/ranges.h b/third_party/fmt/include/fmt/ranges.h index 86f9e01e..0009ca43 100644 --- a/third_party/fmt/include/fmt/ranges.h +++ b/third_party/fmt/include/fmt/ranges.h @@ -69,13 +69,13 @@ struct has_member_fn_begin_end_t().begin()), decltype(std::declval().end())>> : std::true_type {}; -// Member function overload +// Member function overloads. template auto range_begin(T&& rng) FMT_DECLTYPE_RETURN(static_cast(rng).begin()); template auto range_end(T&& rng) FMT_DECLTYPE_RETURN(static_cast(rng).end()); -// ADL overload. Only participates in overload resolution if member functions +// ADL overloads. Only participate in overload resolution if member functions // are not found. template auto range_begin(T&& rng) @@ -619,22 +619,6 @@ auto join(It begin, Sentinel end, string_view sep) -> join_view { return {begin, end, sep}; } -namespace detail { -// ADL helpers for fmt::join() -namespace adl { -using std::begin; -using std::end; - -template auto adlbegin(Range& r) -> decltype(begin(r)) { - return begin(r); -} - -template auto adlend(Range& r) -> decltype(end(r)) { - return end(r); -} -} // namespace adl -} // namespace detail - /** \rst Returns a view that formats `range` with elements separated by `sep`. @@ -652,10 +636,10 @@ template auto adlend(Range& r) -> decltype(end(r)) { \endrst */ template -auto join(Range&& range, string_view sep) - -> join_view { - return join(detail::adl::adlbegin(range), detail::adl::adlend(range), sep); +auto join(Range&& r, string_view sep) + -> join_view { + return {detail::range_begin(r), detail::range_end(r), sep}; } template struct tuple_join_view : detail::view { diff --git a/third_party/fmt/test/format-test.cc b/third_party/fmt/test/format-test.cc index 48e2c0b2..257b6ead 100644 --- a/third_party/fmt/test/format-test.cc +++ b/third_party/fmt/test/format-test.cc @@ -15,6 +15,7 @@ #include // uint32_t +#include // fegetexceptflag and FE_ALL_EXCEPT #include // INT_MAX #include // std::signbit #include // std::condition_variable @@ -22,6 +23,7 @@ #include // std::back_inserter #include // std::list #include // std::mutex +#include // std::string #include // std::thread #include // std::is_default_constructible @@ -108,6 +110,14 @@ TEST(float_test, isfinite) { #endif } +void check_no_fp_exception() { + fexcept_t fe; + fegetexceptflag(&fe, FE_ALL_EXCEPT); + + // No exception flags should have been set + EXPECT_TRUE(fe == 0); +} + template void check_isnan() { using fmt::detail::isnan; EXPECT_FALSE(isnan(Float(0.0))); @@ -120,6 +130,17 @@ template void check_isnan() { EXPECT_FALSE(isnan(Float(-limits::infinity()))); EXPECT_TRUE(isnan(Float(limits::quiet_NaN()))); EXPECT_TRUE(isnan(Float(-limits::quiet_NaN()))); + + // Sanity check: make sure no error has occurred before we start + check_no_fp_exception(); + + // Check that no exception is raised for the non-NaN case + isnan(Float(42.0)); + check_no_fp_exception(); + + // Check that no exception is raised for the NaN case + isnan(Float(limits::quiet_NaN())); + check_no_fp_exception(); } TEST(float_test, isnan) { @@ -2222,16 +2243,21 @@ template void check_enabled_formatters() { } TEST(format_test, test_formatters_enabled) { + using custom_string = + std::basic_string, mock_allocator>; + using custom_wstring = std::basic_string, + mock_allocator>; + check_enabled_formatters(); - check_enabled_formatters(); + std::string, custom_string, std::nullptr_t>(); + check_enabled_formatters< + wchar_t, bool, wchar_t, signed char, unsigned char, short, unsigned short, + int, unsigned, long, unsigned long, long long, unsigned long long, float, + double, long double, void*, const void*, wchar_t*, const wchar_t*, + std::wstring, custom_wstring, std::nullptr_t>(); } TEST(format_int_test, data) { diff --git a/third_party/fmt/test/mock-allocator.h b/third_party/fmt/test/mock-allocator.h index d4dbab19..32c4caae 100644 --- a/third_party/fmt/test/mock-allocator.h +++ b/third_party/fmt/test/mock-allocator.h @@ -20,6 +20,16 @@ template class mock_allocator { using value_type = T; using size_type = size_t; + using pointer = T*; + using const_pointer = const T*; + using reference = T&; + using const_reference = const T&; + using difference_type = ptrdiff_t; + + template struct rebind { + using other = mock_allocator; + }; + mock_allocator() {} mock_allocator(const mock_allocator&) {} diff --git a/third_party/fmt/test/ranges-test.cc b/third_party/fmt/test/ranges-test.cc index db86e416..7905fd49 100644 --- a/third_party/fmt/test/ranges-test.cc +++ b/third_party/fmt/test/ranges-test.cc @@ -462,18 +462,16 @@ TEST(ranges_test, join_range) { } namespace adl { -struct vec : std::vector { - using std::vector::vector; // inherit all constructors +struct vec { + int n[2] = {42, 43}; }; -// ADL-found begin() and end() skip the first and last element -auto begin(vec& v) -> typename vec::iterator { return v.begin() + 1; } -auto end(vec& v) -> typename vec::iterator { return v.end() - 1; } +auto begin(const vec& v) -> const int* { return v.n; } +auto end(const vec& v) -> const int* { return v.n + 2; } } TEST(ranges_test, format_join_adl_begin_end) { - auto v = adl::vec{41, 42, 43, 44}; - EXPECT_EQ(fmt::format("{}", fmt::join(v, "/")), "42/43"); + EXPECT_EQ(fmt::format("{}", fmt::join(adl::vec(), "/")), "42/43"); } #endif // FMT_RANGES_TEST_ENABLE_JOIN diff --git a/third_party/glog/.github/workflows/linux.yml b/third_party/glog/.github/workflows/linux.yml index 0dd243d5..0802de7a 100644 --- a/third_party/glog/.github/workflows/linux.yml +++ b/third_party/glog/.github/workflows/linux.yml @@ -131,7 +131,7 @@ jobs: - name: Upload Coverage to Codecov if: matrix.build_type == 'Debug' - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} files: build_${{matrix.build_type}}/coverage.xml diff --git a/third_party/glog/.github/workflows/macos.yml b/third_party/glog/.github/workflows/macos.yml index 7fc29667..4dd15a7b 100644 --- a/third_party/glog/.github/workflows/macos.yml +++ b/third_party/glog/.github/workflows/macos.yml @@ -68,7 +68,7 @@ jobs: - name: Upload Coverage to Codecov if: matrix.build_type == 'Debug' - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} files: build_${{matrix.build_type}}/coverage.xml diff --git a/third_party/glog/.github/workflows/windows.yml b/third_party/glog/.github/workflows/windows.yml index 4131270a..71f056c8 100644 --- a/third_party/glog/.github/workflows/windows.yml +++ b/third_party/glog/.github/workflows/windows.yml @@ -234,7 +234,7 @@ jobs: - name: Upload Coverage to Codecov if: matrix.build_type == 'Debug' - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} files: build_${{matrix.build_type}}/coverage.xml diff --git a/third_party/glog/src/symbolize.cc b/third_party/glog/src/symbolize.cc index 11a9872a..6cb0e122 100644 --- a/third_party/glog/src/symbolize.cc +++ b/third_party/glog/src/symbolize.cc @@ -642,18 +642,13 @@ OpenObjectFileContainingPcAndGetStartAddress(uint64_t pc, return nullptr; // Malformed line. } + strncpy(out_file_name, cursor, out_file_name_size); + // Making sure |out_file_name| is always null-terminated. + out_file_name[out_file_name_size - 1] = '\0'; + // Finally, "cursor" now points to file name of our interest. - FileDescriptor object_fd{ + return FileDescriptor{ FailureRetry([cursor] { return open(cursor, O_RDONLY); })}; - if (!object_fd) { - // Failed to open object file. Copy the object file name to - // |out_file_name|. - strncpy(out_file_name, cursor, out_file_name_size); - // Making sure |out_file_name| is always null-terminated. - out_file_name[out_file_name_size - 1] = '\0'; - return nullptr; - } - return object_fd; } } diff --git a/third_party/googletest/docs/gmock_cook_book.md b/third_party/googletest/docs/gmock_cook_book.md index 5e9b6647..f1b10b47 100644 --- a/third_party/googletest/docs/gmock_cook_book.md +++ b/third_party/googletest/docs/gmock_cook_book.md @@ -3312,7 +3312,7 @@ For convenience, we allow the description string to be empty (`""`), in which case gMock will use the sequence of words in the matcher name as the description. -For example: +#### Basic Example ```cpp MATCHER(IsDivisibleBy7, "") { return (arg % 7) == 0; } @@ -3350,6 +3350,8 @@ If the above assertions fail, they will print something like: where the descriptions `"is divisible by 7"` and `"not (is divisible by 7)"` are automatically calculated from the matcher name `IsDivisibleBy7`. +#### Adding Custom Failure Messages + As you may have noticed, the auto-generated descriptions (especially those for the negation) may not be so great. You can always override them with a `string` expression of your own: @@ -3383,14 +3385,41 @@ With this definition, the above assertion will give a better message: Actual: 27 (the remainder is 6) ``` +#### Using EXPECT_ Statements in Matchers + +You can also use `EXPECT_...` (and `ASSERT_...`) statements inside custom +matcher definitions. In many cases, this allows you to write your matcher more +concisely while still providing an informative error message. For example: + +```cpp +MATCHER(IsDivisibleBy7, "") { + const auto remainder = arg % 7; + EXPECT_EQ(remainder, 0); + return true; +} +``` + +If you write a test that includes the line `EXPECT_THAT(27, IsDivisibleBy7());`, +you will get an error something like the following: + +```shell +Expected equality of these values: + remainder + Which is: 6 + 0 +``` + +#### `MatchAndExplain` + You should let `MatchAndExplain()` print *any additional information* that can help a user understand the match result. Note that it should explain why the match succeeds in case of a success (unless it's obvious) - this is useful when the matcher is used inside `Not()`. There is no need to print the argument value itself, as gMock already prints it for you. -{: .callout .note} -NOTE: The type of the value being matched (`arg_type`) is determined by the +#### Argument Types + +The type of the value being matched (`arg_type`) is determined by the context in which you use the matcher and is supplied to you by the compiler, so you don't need to worry about declaring it (nor can you). This allows the matcher to be polymorphic. For example, `IsDivisibleBy7()` can be used to match diff --git a/third_party/googletest/googletest/include/gtest/gtest-param-test.h b/third_party/googletest/googletest/include/gtest/gtest-param-test.h index 6847b646..55ee088b 100644 --- a/third_party/googletest/googletest/include/gtest/gtest-param-test.h +++ b/third_party/googletest/googletest/include/gtest/gtest-param-test.h @@ -178,7 +178,7 @@ TEST_P(DerivedTest, DoesBlah) { #include #include "gtest/internal/gtest-internal.h" -#include "gtest/internal/gtest-param-util.h" +#include "gtest/internal/gtest-param-util.h" // IWYU pragma: export #include "gtest/internal/gtest-port.h" namespace testing { diff --git a/third_party/hypothesis/hypothesis.h b/third_party/hypothesis/hypothesis.h index 699b7f4d..eb025e72 100644 --- a/third_party/hypothesis/hypothesis.h +++ b/third_party/hypothesis/hypothesis.h @@ -246,11 +246,14 @@ namespace hypothesis { return std::make_pair(result, oss.str()); } - /// Write 2D Chi^2 frequency tables to disk in a format that is nicely plottable by Octave and MATLAB + /// Write 2D Chi^2 frequency tables to disk in a format that is nicely plottable by NumPy and Matplotlib inline void chi2_dump(int res1, int res2, const double *obsFrequencies, const double *expFrequencies, const std::string &filename) { std::ofstream f(filename); - f << "obsFrequencies = [ "; + f << "import matplotlib.pyplot as plt" << std::endl + << "import numpy as np" << std::endl; + + f << "obsFrequencies = np.array([[ "; for (int i=0; i wrote an article about zlib for the Jan. 1997 issue of Dr. Dobb's Journal; a copy of the article is available at https://marknelson.us/posts/1997/01/01/zlib-engine.html . -The changes made in version 1.3 are documented in the file ChangeLog. +The changes made in version 1.3.1 are documented in the file ChangeLog. Unsupported third party contributions are provided in directory contrib/ . @@ -83,7 +83,7 @@ Acknowledgments: Copyright notice: - (C) 1995-2023 Jean-loup Gailly and Mark Adler + (C) 1995-2024 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/third_party/zlib-1.3/adler32.c b/third_party/zlib-1.3.1/adler32.c similarity index 100% rename from third_party/zlib-1.3/adler32.c rename to third_party/zlib-1.3.1/adler32.c diff --git a/third_party/zlib-1.3/amiga/Makefile.pup b/third_party/zlib-1.3.1/amiga/Makefile.pup similarity index 100% rename from third_party/zlib-1.3/amiga/Makefile.pup rename to third_party/zlib-1.3.1/amiga/Makefile.pup diff --git a/third_party/zlib-1.3/amiga/Makefile.sas b/third_party/zlib-1.3.1/amiga/Makefile.sas similarity index 100% rename from third_party/zlib-1.3/amiga/Makefile.sas rename to third_party/zlib-1.3.1/amiga/Makefile.sas diff --git a/third_party/zlib-1.3/compress.c b/third_party/zlib-1.3.1/compress.c similarity index 100% rename from third_party/zlib-1.3/compress.c rename to third_party/zlib-1.3.1/compress.c diff --git a/third_party/zlib-1.3/configure b/third_party/zlib-1.3.1/configure old mode 100644 new mode 100755 similarity index 99% rename from third_party/zlib-1.3/configure rename to third_party/zlib-1.3.1/configure index cc867c94..c55098af --- a/third_party/zlib-1.3/configure +++ b/third_party/zlib-1.3.1/configure @@ -25,7 +25,7 @@ if test $SRCDIR = "."; then ZINCOUT="-I." SRCDIR="" else - ZINC='-include zconf.h' + ZINC='-I. -include zconf.h' ZINCOUT='-I. -I$(SRCDIR)' SRCDIR="$SRCDIR/" fi @@ -44,7 +44,8 @@ STATICLIB=libz.a # extract zlib version numbers from zlib.h VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < ${SRCDIR}zlib.h` -VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < ${SRCDIR}zlib.h` +VER3=`echo ${VER}|sed -n -e 's/\([0-9]\{1,\}\(\\.[0-9]\{1,\}\)\{1,2\}\).*/\1/p'` +VER1=`echo ${VER}|sed -n -e 's/\([0-9]\{1,\}\)\\..*/\1/p'` # establish commands for library building if "${CROSS_PREFIX}ar" --version >/dev/null 2>/dev/null || test $? -lt 126; then @@ -263,7 +264,7 @@ if test "$gcc" -eq 1 && ($cc -c $test.c) >> configure.log 2>&1; then SHAREDLIB=libz$shared_ext SHAREDLIBV=libz.$VER$shared_ext SHAREDLIBM=libz.$VER1$shared_ext - LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER"} + LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER3"} if "${CROSS_PREFIX}libtool" -V 2>&1 | grep Apple > /dev/null; then AR="${CROSS_PREFIX}libtool" elif libtool -V 2>&1 | grep Apple > /dev/null; then @@ -441,7 +442,7 @@ EOF if test $shared -eq 1; then echo Checking for shared library support... | tee -a configure.log # we must test in two steps (cc then ld), required at least on SunOS 4.x - if try $CC -w -c $SFLAGS $test.c && + if try $CC -c $SFLAGS $test.c && try $LDSHARED $SFLAGS -o $test$shared_ext $test.o; then echo Building shared library $SHAREDLIBV with $CC. | tee -a configure.log elif test -z "$old_cc" -a -z "$old_cflags"; then diff --git a/third_party/zlib-1.3/contrib/README.contrib b/third_party/zlib-1.3.1/contrib/README.contrib similarity index 100% rename from third_party/zlib-1.3/contrib/README.contrib rename to third_party/zlib-1.3.1/contrib/README.contrib diff --git a/third_party/zlib-1.3/contrib/ada/buffer_demo.adb b/third_party/zlib-1.3.1/contrib/ada/buffer_demo.adb similarity index 100% rename from third_party/zlib-1.3/contrib/ada/buffer_demo.adb rename to third_party/zlib-1.3.1/contrib/ada/buffer_demo.adb diff --git a/third_party/zlib-1.3/contrib/ada/mtest.adb b/third_party/zlib-1.3.1/contrib/ada/mtest.adb similarity index 100% rename from third_party/zlib-1.3/contrib/ada/mtest.adb rename to third_party/zlib-1.3.1/contrib/ada/mtest.adb diff --git a/third_party/zlib-1.3/contrib/ada/read.adb b/third_party/zlib-1.3.1/contrib/ada/read.adb similarity index 100% rename from third_party/zlib-1.3/contrib/ada/read.adb rename to third_party/zlib-1.3.1/contrib/ada/read.adb diff --git a/third_party/zlib-1.3/contrib/ada/readme.txt b/third_party/zlib-1.3.1/contrib/ada/readme.txt similarity index 100% rename from third_party/zlib-1.3/contrib/ada/readme.txt rename to third_party/zlib-1.3.1/contrib/ada/readme.txt diff --git a/third_party/zlib-1.3/contrib/ada/test.adb b/third_party/zlib-1.3.1/contrib/ada/test.adb similarity index 100% rename from third_party/zlib-1.3/contrib/ada/test.adb rename to third_party/zlib-1.3.1/contrib/ada/test.adb diff --git a/third_party/zlib-1.3/contrib/ada/zlib-streams.adb b/third_party/zlib-1.3.1/contrib/ada/zlib-streams.adb similarity index 100% rename from third_party/zlib-1.3/contrib/ada/zlib-streams.adb rename to third_party/zlib-1.3.1/contrib/ada/zlib-streams.adb diff --git a/third_party/zlib-1.3/contrib/ada/zlib-streams.ads b/third_party/zlib-1.3.1/contrib/ada/zlib-streams.ads similarity index 100% rename from third_party/zlib-1.3/contrib/ada/zlib-streams.ads rename to third_party/zlib-1.3.1/contrib/ada/zlib-streams.ads diff --git a/third_party/zlib-1.3/contrib/ada/zlib-thin.adb b/third_party/zlib-1.3.1/contrib/ada/zlib-thin.adb similarity index 100% rename from third_party/zlib-1.3/contrib/ada/zlib-thin.adb rename to third_party/zlib-1.3.1/contrib/ada/zlib-thin.adb diff --git a/third_party/zlib-1.3/contrib/ada/zlib-thin.ads b/third_party/zlib-1.3.1/contrib/ada/zlib-thin.ads similarity index 100% rename from third_party/zlib-1.3/contrib/ada/zlib-thin.ads rename to third_party/zlib-1.3.1/contrib/ada/zlib-thin.ads diff --git a/third_party/zlib-1.3/contrib/ada/zlib.adb b/third_party/zlib-1.3.1/contrib/ada/zlib.adb similarity index 100% rename from third_party/zlib-1.3/contrib/ada/zlib.adb rename to third_party/zlib-1.3.1/contrib/ada/zlib.adb diff --git a/third_party/zlib-1.3/contrib/ada/zlib.ads b/third_party/zlib-1.3.1/contrib/ada/zlib.ads similarity index 100% rename from third_party/zlib-1.3/contrib/ada/zlib.ads rename to third_party/zlib-1.3.1/contrib/ada/zlib.ads diff --git a/third_party/zlib-1.3/contrib/ada/zlib.gpr b/third_party/zlib-1.3.1/contrib/ada/zlib.gpr similarity index 100% rename from third_party/zlib-1.3/contrib/ada/zlib.gpr rename to third_party/zlib-1.3.1/contrib/ada/zlib.gpr diff --git a/third_party/zlib-1.3/contrib/blast/Makefile b/third_party/zlib-1.3.1/contrib/blast/Makefile similarity index 100% rename from third_party/zlib-1.3/contrib/blast/Makefile rename to third_party/zlib-1.3.1/contrib/blast/Makefile diff --git a/third_party/zlib-1.3/contrib/blast/README b/third_party/zlib-1.3.1/contrib/blast/README similarity index 100% rename from third_party/zlib-1.3/contrib/blast/README rename to third_party/zlib-1.3.1/contrib/blast/README diff --git a/third_party/zlib-1.3/contrib/blast/blast.c b/third_party/zlib-1.3.1/contrib/blast/blast.c similarity index 100% rename from third_party/zlib-1.3/contrib/blast/blast.c rename to third_party/zlib-1.3.1/contrib/blast/blast.c diff --git a/third_party/zlib-1.3/contrib/blast/blast.h b/third_party/zlib-1.3.1/contrib/blast/blast.h similarity index 100% rename from third_party/zlib-1.3/contrib/blast/blast.h rename to third_party/zlib-1.3.1/contrib/blast/blast.h diff --git a/third_party/zlib-1.3/contrib/blast/test.pk b/third_party/zlib-1.3.1/contrib/blast/test.pk similarity index 100% rename from third_party/zlib-1.3/contrib/blast/test.pk rename to third_party/zlib-1.3.1/contrib/blast/test.pk diff --git a/third_party/zlib-1.3/contrib/blast/test.txt b/third_party/zlib-1.3.1/contrib/blast/test.txt similarity index 100% rename from third_party/zlib-1.3/contrib/blast/test.txt rename to third_party/zlib-1.3.1/contrib/blast/test.txt diff --git a/third_party/zlib-1.3/contrib/delphi/ZLib.pas b/third_party/zlib-1.3.1/contrib/delphi/ZLib.pas similarity index 99% rename from third_party/zlib-1.3/contrib/delphi/ZLib.pas rename to third_party/zlib-1.3.1/contrib/delphi/ZLib.pas index 814ffa67..93fa4c9e 100644 --- a/third_party/zlib-1.3/contrib/delphi/ZLib.pas +++ b/third_party/zlib-1.3.1/contrib/delphi/ZLib.pas @@ -152,7 +152,7 @@ procedure DecompressToUserBuf(const InBuf: Pointer; InBytes: Integer; const OutBuf: Pointer; BufSize: Integer); const - zlib_version = '1.3.0'; + zlib_version = '1.3.1'; type EZlibError = class(Exception); diff --git a/third_party/zlib-1.3/contrib/delphi/ZLibConst.pas b/third_party/zlib-1.3.1/contrib/delphi/ZLibConst.pas similarity index 100% rename from third_party/zlib-1.3/contrib/delphi/ZLibConst.pas rename to third_party/zlib-1.3.1/contrib/delphi/ZLibConst.pas diff --git a/third_party/zlib-1.3/contrib/delphi/readme.txt b/third_party/zlib-1.3.1/contrib/delphi/readme.txt similarity index 100% rename from third_party/zlib-1.3/contrib/delphi/readme.txt rename to third_party/zlib-1.3.1/contrib/delphi/readme.txt diff --git a/third_party/zlib-1.3/contrib/delphi/zlibd32.mak b/third_party/zlib-1.3.1/contrib/delphi/zlibd32.mak similarity index 100% rename from third_party/zlib-1.3/contrib/delphi/zlibd32.mak rename to third_party/zlib-1.3.1/contrib/delphi/zlibd32.mak diff --git a/third_party/zlib-1.3/contrib/dotzlib/DotZLib.build b/third_party/zlib-1.3.1/contrib/dotzlib/DotZLib.build similarity index 100% rename from third_party/zlib-1.3/contrib/dotzlib/DotZLib.build rename to third_party/zlib-1.3.1/contrib/dotzlib/DotZLib.build diff --git a/third_party/zlib-1.3/contrib/dotzlib/DotZLib.chm b/third_party/zlib-1.3.1/contrib/dotzlib/DotZLib.chm similarity index 100% rename from third_party/zlib-1.3/contrib/dotzlib/DotZLib.chm rename to third_party/zlib-1.3.1/contrib/dotzlib/DotZLib.chm diff --git a/third_party/zlib-1.3/contrib/dotzlib/DotZLib.sln b/third_party/zlib-1.3.1/contrib/dotzlib/DotZLib.sln similarity index 100% rename from third_party/zlib-1.3/contrib/dotzlib/DotZLib.sln rename to third_party/zlib-1.3.1/contrib/dotzlib/DotZLib.sln diff --git a/third_party/zlib-1.3/contrib/dotzlib/DotZLib/AssemblyInfo.cs b/third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/AssemblyInfo.cs similarity index 100% rename from third_party/zlib-1.3/contrib/dotzlib/DotZLib/AssemblyInfo.cs rename to third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/AssemblyInfo.cs diff --git a/third_party/zlib-1.3/contrib/dotzlib/DotZLib/ChecksumImpl.cs b/third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/ChecksumImpl.cs similarity index 99% rename from third_party/zlib-1.3/contrib/dotzlib/DotZLib/ChecksumImpl.cs rename to third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/ChecksumImpl.cs index bffe6093..9b6c3907 100644 --- a/third_party/zlib-1.3/contrib/dotzlib/DotZLib/ChecksumImpl.cs +++ b/third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/ChecksumImpl.cs @@ -34,7 +34,7 @@ public ChecksumGeneratorBase() } /// - /// Initializes a new instance of the checksum generator basewith a specified value + /// Initializes a new instance of the checksum generator base with a specified value /// /// The value to set the current checksum to public ChecksumGeneratorBase(uint initialValue) diff --git a/third_party/zlib-1.3/contrib/dotzlib/DotZLib/CircularBuffer.cs b/third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/CircularBuffer.cs similarity index 100% rename from third_party/zlib-1.3/contrib/dotzlib/DotZLib/CircularBuffer.cs rename to third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/CircularBuffer.cs diff --git a/third_party/zlib-1.3/contrib/dotzlib/DotZLib/CodecBase.cs b/third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/CodecBase.cs similarity index 100% rename from third_party/zlib-1.3/contrib/dotzlib/DotZLib/CodecBase.cs rename to third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/CodecBase.cs diff --git a/third_party/zlib-1.3/contrib/dotzlib/DotZLib/Deflater.cs b/third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/Deflater.cs similarity index 100% rename from third_party/zlib-1.3/contrib/dotzlib/DotZLib/Deflater.cs rename to third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/Deflater.cs diff --git a/third_party/zlib-1.3/contrib/dotzlib/DotZLib/DotZLib.cs b/third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/DotZLib.cs similarity index 100% rename from third_party/zlib-1.3/contrib/dotzlib/DotZLib/DotZLib.cs rename to third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/DotZLib.cs diff --git a/third_party/zlib-1.3/contrib/dotzlib/DotZLib/DotZLib.csproj b/third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/DotZLib.csproj similarity index 100% rename from third_party/zlib-1.3/contrib/dotzlib/DotZLib/DotZLib.csproj rename to third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/DotZLib.csproj diff --git a/third_party/zlib-1.3/contrib/dotzlib/DotZLib/GZipStream.cs b/third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/GZipStream.cs similarity index 100% rename from third_party/zlib-1.3/contrib/dotzlib/DotZLib/GZipStream.cs rename to third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/GZipStream.cs diff --git a/third_party/zlib-1.3/contrib/dotzlib/DotZLib/Inflater.cs b/third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/Inflater.cs similarity index 100% rename from third_party/zlib-1.3/contrib/dotzlib/DotZLib/Inflater.cs rename to third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/Inflater.cs diff --git a/third_party/zlib-1.3/contrib/dotzlib/DotZLib/UnitTests.cs b/third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/UnitTests.cs similarity index 99% rename from third_party/zlib-1.3/contrib/dotzlib/DotZLib/UnitTests.cs rename to third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/UnitTests.cs index 209c8de4..d81554b0 100644 --- a/third_party/zlib-1.3/contrib/dotzlib/DotZLib/UnitTests.cs +++ b/third_party/zlib-1.3.1/contrib/dotzlib/DotZLib/UnitTests.cs @@ -156,7 +156,7 @@ public class InfoTests public void Info_Version() { Info info = new Info(); - Assert.AreEqual("1.3.0", Info.Version); + Assert.AreEqual("1.3.1", Info.Version); Assert.AreEqual(32, info.SizeOfUInt); Assert.AreEqual(32, info.SizeOfULong); Assert.AreEqual(32, info.SizeOfPointer); diff --git a/third_party/zlib-1.3/contrib/dotzlib/LICENSE_1_0.txt b/third_party/zlib-1.3.1/contrib/dotzlib/LICENSE_1_0.txt similarity index 100% rename from third_party/zlib-1.3/contrib/dotzlib/LICENSE_1_0.txt rename to third_party/zlib-1.3.1/contrib/dotzlib/LICENSE_1_0.txt diff --git a/third_party/zlib-1.3/contrib/dotzlib/readme.txt b/third_party/zlib-1.3.1/contrib/dotzlib/readme.txt similarity index 100% rename from third_party/zlib-1.3/contrib/dotzlib/readme.txt rename to third_party/zlib-1.3.1/contrib/dotzlib/readme.txt diff --git a/third_party/zlib-1.3/contrib/gcc_gvmat64/gvmat64.S b/third_party/zlib-1.3.1/contrib/gcc_gvmat64/gvmat64.S similarity index 100% rename from third_party/zlib-1.3/contrib/gcc_gvmat64/gvmat64.S rename to third_party/zlib-1.3.1/contrib/gcc_gvmat64/gvmat64.S diff --git a/third_party/zlib-1.3/contrib/infback9/README b/third_party/zlib-1.3.1/contrib/infback9/README similarity index 100% rename from third_party/zlib-1.3/contrib/infback9/README rename to third_party/zlib-1.3.1/contrib/infback9/README diff --git a/third_party/zlib-1.3/contrib/infback9/infback9.c b/third_party/zlib-1.3.1/contrib/infback9/infback9.c similarity index 100% rename from third_party/zlib-1.3/contrib/infback9/infback9.c rename to third_party/zlib-1.3.1/contrib/infback9/infback9.c diff --git a/third_party/zlib-1.3/contrib/infback9/infback9.h b/third_party/zlib-1.3.1/contrib/infback9/infback9.h similarity index 100% rename from third_party/zlib-1.3/contrib/infback9/infback9.h rename to third_party/zlib-1.3.1/contrib/infback9/infback9.h diff --git a/third_party/zlib-1.3/contrib/infback9/inffix9.h b/third_party/zlib-1.3.1/contrib/infback9/inffix9.h similarity index 100% rename from third_party/zlib-1.3/contrib/infback9/inffix9.h rename to third_party/zlib-1.3.1/contrib/infback9/inffix9.h diff --git a/third_party/zlib-1.3/contrib/infback9/inflate9.h b/third_party/zlib-1.3.1/contrib/infback9/inflate9.h similarity index 100% rename from third_party/zlib-1.3/contrib/infback9/inflate9.h rename to third_party/zlib-1.3.1/contrib/infback9/inflate9.h diff --git a/third_party/zlib-1.3/contrib/infback9/inftree9.c b/third_party/zlib-1.3.1/contrib/infback9/inftree9.c similarity index 98% rename from third_party/zlib-1.3/contrib/infback9/inftree9.c rename to third_party/zlib-1.3.1/contrib/infback9/inftree9.c index dc38f24d..ac707ed3 100644 --- a/third_party/zlib-1.3/contrib/infback9/inftree9.c +++ b/third_party/zlib-1.3.1/contrib/infback9/inftree9.c @@ -1,5 +1,5 @@ /* inftree9.c -- generate Huffman trees for efficient decoding - * Copyright (C) 1995-2023 Mark Adler + * Copyright (C) 1995-2024 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -9,7 +9,7 @@ #define MAXBITS 15 const char inflate9_copyright[] = - " inflate9 1.3 Copyright 1995-2023 Mark Adler "; + " inflate9 1.3.1 Copyright 1995-2024 Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot @@ -59,7 +59,7 @@ int inflate_table9(codetype type, unsigned short FAR *lens, unsigned codes, static const unsigned short lext[31] = { /* Length codes 257..285 extra */ 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, 130, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 132, - 133, 133, 133, 133, 144, 198, 203}; + 133, 133, 133, 133, 144, 203, 77}; static const unsigned short dbase[32] = { /* Distance codes 0..31 base */ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, diff --git a/third_party/zlib-1.3/contrib/infback9/inftree9.h b/third_party/zlib-1.3.1/contrib/infback9/inftree9.h similarity index 94% rename from third_party/zlib-1.3/contrib/infback9/inftree9.h rename to third_party/zlib-1.3.1/contrib/infback9/inftree9.h index 2c1252f5..ab2ea28b 100644 --- a/third_party/zlib-1.3/contrib/infback9/inftree9.h +++ b/third_party/zlib-1.3.1/contrib/infback9/inftree9.h @@ -41,8 +41,8 @@ typedef struct { examples/enough.c found in the zlib distribution. The arguments to that program are the number of symbols, the initial root table size, and the maximum bit length of a code. "enough 286 9 15" for literal/length codes - returns returns 852, and "enough 32 6 15" for distance codes returns 594. - The initial root table size (9 or 6) is found in the fifth argument of the + returns 852, and "enough 32 6 15" for distance codes returns 594. The + initial root table size (9 or 6) is found in the fifth argument of the inflate_table() calls in infback9.c. If the root table size is changed, then these maximum sizes would be need to be recalculated and updated. */ #define ENOUGH_LENS 852 diff --git a/third_party/zlib-1.3/contrib/iostream/test.cpp b/third_party/zlib-1.3.1/contrib/iostream/test.cpp similarity index 100% rename from third_party/zlib-1.3/contrib/iostream/test.cpp rename to third_party/zlib-1.3.1/contrib/iostream/test.cpp diff --git a/third_party/zlib-1.3/contrib/iostream/zfstream.cpp b/third_party/zlib-1.3.1/contrib/iostream/zfstream.cpp similarity index 100% rename from third_party/zlib-1.3/contrib/iostream/zfstream.cpp rename to third_party/zlib-1.3.1/contrib/iostream/zfstream.cpp diff --git a/third_party/zlib-1.3/contrib/iostream/zfstream.h b/third_party/zlib-1.3.1/contrib/iostream/zfstream.h similarity index 100% rename from third_party/zlib-1.3/contrib/iostream/zfstream.h rename to third_party/zlib-1.3.1/contrib/iostream/zfstream.h diff --git a/third_party/zlib-1.3/contrib/iostream2/zstream.h b/third_party/zlib-1.3.1/contrib/iostream2/zstream.h similarity index 100% rename from third_party/zlib-1.3/contrib/iostream2/zstream.h rename to third_party/zlib-1.3.1/contrib/iostream2/zstream.h diff --git a/third_party/zlib-1.3/contrib/iostream2/zstream_test.cpp b/third_party/zlib-1.3.1/contrib/iostream2/zstream_test.cpp similarity index 100% rename from third_party/zlib-1.3/contrib/iostream2/zstream_test.cpp rename to third_party/zlib-1.3.1/contrib/iostream2/zstream_test.cpp diff --git a/third_party/zlib-1.3/contrib/iostream3/README b/third_party/zlib-1.3.1/contrib/iostream3/README similarity index 100% rename from third_party/zlib-1.3/contrib/iostream3/README rename to third_party/zlib-1.3.1/contrib/iostream3/README diff --git a/third_party/zlib-1.3/contrib/iostream3/TODO b/third_party/zlib-1.3.1/contrib/iostream3/TODO similarity index 100% rename from third_party/zlib-1.3/contrib/iostream3/TODO rename to third_party/zlib-1.3.1/contrib/iostream3/TODO diff --git a/third_party/zlib-1.3/contrib/iostream3/test.cc b/third_party/zlib-1.3.1/contrib/iostream3/test.cc similarity index 100% rename from third_party/zlib-1.3/contrib/iostream3/test.cc rename to third_party/zlib-1.3.1/contrib/iostream3/test.cc diff --git a/third_party/zlib-1.3/contrib/iostream3/zfstream.cc b/third_party/zlib-1.3.1/contrib/iostream3/zfstream.cc similarity index 100% rename from third_party/zlib-1.3/contrib/iostream3/zfstream.cc rename to third_party/zlib-1.3.1/contrib/iostream3/zfstream.cc diff --git a/third_party/zlib-1.3/contrib/iostream3/zfstream.h b/third_party/zlib-1.3.1/contrib/iostream3/zfstream.h similarity index 99% rename from third_party/zlib-1.3/contrib/iostream3/zfstream.h rename to third_party/zlib-1.3.1/contrib/iostream3/zfstream.h index 8574479a..3dabc0f9 100644 --- a/third_party/zlib-1.3/contrib/iostream3/zfstream.h +++ b/third_party/zlib-1.3.1/contrib/iostream3/zfstream.h @@ -413,7 +413,7 @@ template class gzomanip2 { public: - // Allows insertor to peek at internals + // Allows inserter to peek at internals template friend gzofstream& operator<<(gzofstream&, @@ -452,7 +452,7 @@ template : func(f), val1(v1), val2(v2) { } -// Insertor applies underlying manipulator function to stream +// Inserter applies underlying manipulator function to stream template inline gzofstream& operator<<(gzofstream& s, const gzomanip2& m) diff --git a/third_party/zlib-1.3/contrib/minizip/Makefile b/third_party/zlib-1.3.1/contrib/minizip/Makefile similarity index 98% rename from third_party/zlib-1.3/contrib/minizip/Makefile rename to third_party/zlib-1.3.1/contrib/minizip/Makefile index aac76e07..3d927ec1 100644 --- a/third_party/zlib-1.3/contrib/minizip/Makefile +++ b/third_party/zlib-1.3.1/contrib/minizip/Makefile @@ -1,4 +1,4 @@ -CC=cc +CC?=cc CFLAGS := $(CFLAGS) -O -I../.. UNZ_OBJS = miniunz.o unzip.o ioapi.o ../../libz.a diff --git a/third_party/zlib-1.3/contrib/minizip/Makefile.am b/third_party/zlib-1.3.1/contrib/minizip/Makefile.am similarity index 100% rename from third_party/zlib-1.3/contrib/minizip/Makefile.am rename to third_party/zlib-1.3.1/contrib/minizip/Makefile.am diff --git a/third_party/zlib-1.3/contrib/minizip/MiniZip64_Changes.txt b/third_party/zlib-1.3.1/contrib/minizip/MiniZip64_Changes.txt similarity index 100% rename from third_party/zlib-1.3/contrib/minizip/MiniZip64_Changes.txt rename to third_party/zlib-1.3.1/contrib/minizip/MiniZip64_Changes.txt diff --git a/third_party/zlib-1.3/contrib/minizip/MiniZip64_info.txt b/third_party/zlib-1.3.1/contrib/minizip/MiniZip64_info.txt similarity index 100% rename from third_party/zlib-1.3/contrib/minizip/MiniZip64_info.txt rename to third_party/zlib-1.3.1/contrib/minizip/MiniZip64_info.txt diff --git a/third_party/zlib-1.3/contrib/minizip/configure.ac b/third_party/zlib-1.3.1/contrib/minizip/configure.ac similarity index 93% rename from third_party/zlib-1.3/contrib/minizip/configure.ac rename to third_party/zlib-1.3.1/contrib/minizip/configure.ac index df80e5b7..15ec9171 100644 --- a/third_party/zlib-1.3/contrib/minizip/configure.ac +++ b/third_party/zlib-1.3.1/contrib/minizip/configure.ac @@ -1,7 +1,7 @@ # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. -AC_INIT([minizip], [1.3.0], [bugzilla.redhat.com]) +AC_INIT([minizip], [1.3.1], [bugzilla.redhat.com]) AC_CONFIG_SRCDIR([minizip.c]) AM_INIT_AUTOMAKE([foreign]) LT_INIT diff --git a/third_party/zlib-1.3/contrib/minizip/crypt.h b/third_party/zlib-1.3.1/contrib/minizip/crypt.h similarity index 100% rename from third_party/zlib-1.3/contrib/minizip/crypt.h rename to third_party/zlib-1.3.1/contrib/minizip/crypt.h diff --git a/third_party/zlib-1.3/contrib/minizip/ioapi.c b/third_party/zlib-1.3.1/contrib/minizip/ioapi.c similarity index 100% rename from third_party/zlib-1.3/contrib/minizip/ioapi.c rename to third_party/zlib-1.3.1/contrib/minizip/ioapi.c diff --git a/third_party/zlib-1.3/contrib/minizip/ioapi.h b/third_party/zlib-1.3.1/contrib/minizip/ioapi.h similarity index 99% rename from third_party/zlib-1.3/contrib/minizip/ioapi.h rename to third_party/zlib-1.3.1/contrib/minizip/ioapi.h index c588a18d..a2d2e6e6 100644 --- a/third_party/zlib-1.3/contrib/minizip/ioapi.h +++ b/third_party/zlib-1.3.1/contrib/minizip/ioapi.h @@ -144,7 +144,7 @@ typedef long (ZCALLBACK *tell_file_func) (voidpf opaque, voidpf stream) typedef long (ZCALLBACK *seek_file_func) (voidpf opaque, voidpf stream, uLong offset, int origin); -/* here is the "old" 32 bits structure structure */ +/* here is the "old" 32 bits structure */ typedef struct zlib_filefunc_def_s { open_file_func zopen_file; diff --git a/third_party/zlib-1.3/contrib/minizip/iowin32.c b/third_party/zlib-1.3.1/contrib/minizip/iowin32.c similarity index 100% rename from third_party/zlib-1.3/contrib/minizip/iowin32.c rename to third_party/zlib-1.3.1/contrib/minizip/iowin32.c diff --git a/third_party/zlib-1.3/contrib/minizip/iowin32.h b/third_party/zlib-1.3.1/contrib/minizip/iowin32.h similarity index 100% rename from third_party/zlib-1.3/contrib/minizip/iowin32.h rename to third_party/zlib-1.3.1/contrib/minizip/iowin32.h diff --git a/third_party/zlib-1.3/contrib/minizip/make_vms.com b/third_party/zlib-1.3.1/contrib/minizip/make_vms.com similarity index 100% rename from third_party/zlib-1.3/contrib/minizip/make_vms.com rename to third_party/zlib-1.3.1/contrib/minizip/make_vms.com diff --git a/third_party/zlib-1.3/contrib/minizip/miniunz.c b/third_party/zlib-1.3.1/contrib/minizip/miniunz.c similarity index 96% rename from third_party/zlib-1.3/contrib/minizip/miniunz.c rename to third_party/zlib-1.3.1/contrib/minizip/miniunz.c index a12aec8b..d627c422 100644 --- a/third_party/zlib-1.3/contrib/minizip/miniunz.c +++ b/third_party/zlib-1.3.1/contrib/minizip/miniunz.c @@ -79,7 +79,7 @@ /* change_file_date : change the date/time of a file filename : the filename of the file where date/time must be modified - dosdate : the new date at the MSDos format (4 bytes) + dosdate : the new date at the MSDOS format (4 bytes) tmu_date : the SAME new date at the tm_unz format */ static void change_file_date(const char *filename, uLong dosdate, tm_unz tmu_date) { #ifdef _WIN32 @@ -186,7 +186,7 @@ static int makedir(const char *newdir) { } static void do_banner(void) { - printf("MiniUnz 1.01b, demo of zLib + Unz package written by Gilles Vollant\n"); + printf("MiniUnz 1.1, demo of zLib + Unz package written by Gilles Vollant\n"); printf("more info at http://www.winimage.com/zLibDll/unzip.html\n\n"); } @@ -356,6 +356,20 @@ static int do_extract_currentfile(unzFile uf, const int* popt_extract_without_pa else write_filename = filename_withoutpath; + if (write_filename[0]!='\0') + { + const char* relative_check = write_filename; + while (relative_check[1]!='\0') + { + if (relative_check[0]=='.' && relative_check[1]=='.') + write_filename = relative_check; + relative_check++; + } + } + + while (write_filename[0]=='/' || write_filename[0]=='.') + write_filename++; + err = unzOpenCurrentFilePassword(uf,password); if (err!=UNZ_OK) { diff --git a/third_party/zlib-1.3/contrib/minizip/miniunzip.1 b/third_party/zlib-1.3.1/contrib/minizip/miniunzip.1 similarity index 100% rename from third_party/zlib-1.3/contrib/minizip/miniunzip.1 rename to third_party/zlib-1.3.1/contrib/minizip/miniunzip.1 diff --git a/third_party/zlib-1.3/contrib/minizip/minizip.1 b/third_party/zlib-1.3.1/contrib/minizip/minizip.1 similarity index 100% rename from third_party/zlib-1.3/contrib/minizip/minizip.1 rename to third_party/zlib-1.3.1/contrib/minizip/minizip.1 diff --git a/third_party/zlib-1.3/contrib/minizip/minizip.c b/third_party/zlib-1.3.1/contrib/minizip/minizip.c similarity index 100% rename from third_party/zlib-1.3/contrib/minizip/minizip.c rename to third_party/zlib-1.3.1/contrib/minizip/minizip.c diff --git a/third_party/zlib-1.3/contrib/minizip/minizip.pc.in b/third_party/zlib-1.3.1/contrib/minizip/minizip.pc.in similarity index 100% rename from third_party/zlib-1.3/contrib/minizip/minizip.pc.in rename to third_party/zlib-1.3.1/contrib/minizip/minizip.pc.in diff --git a/third_party/zlib-1.3/contrib/minizip/mztools.c b/third_party/zlib-1.3.1/contrib/minizip/mztools.c similarity index 100% rename from third_party/zlib-1.3/contrib/minizip/mztools.c rename to third_party/zlib-1.3.1/contrib/minizip/mztools.c diff --git a/third_party/zlib-1.3/contrib/minizip/mztools.h b/third_party/zlib-1.3.1/contrib/minizip/mztools.h similarity index 100% rename from third_party/zlib-1.3/contrib/minizip/mztools.h rename to third_party/zlib-1.3.1/contrib/minizip/mztools.h diff --git a/third_party/zlib-1.3/contrib/minizip/unzip.c b/third_party/zlib-1.3.1/contrib/minizip/unzip.c similarity index 99% rename from third_party/zlib-1.3/contrib/minizip/unzip.c rename to third_party/zlib-1.3.1/contrib/minizip/unzip.c index ed763f89..ea05b7d6 100644 --- a/third_party/zlib-1.3/contrib/minizip/unzip.c +++ b/third_party/zlib-1.3.1/contrib/minizip/unzip.c @@ -117,7 +117,7 @@ const char unz_copyright[] = " unzip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"; -/* unz_file_info_interntal contain internal info about a file in zipfile*/ +/* unz_file_info64_internal contain internal info about a file in zipfile*/ typedef struct unz_file_info64_internal_s { ZPOS64_T offset_curfile;/* relative offset of local header 8 bytes */ @@ -450,7 +450,7 @@ local ZPOS64_T unz64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK) return CENTRALDIRINVALID; - /* number of the disk with the start of the zip64 end of central directory */ + /* number of the disk with the start of the zip64 end of central directory */ if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK) return CENTRALDIRINVALID; if (uL != 0) @@ -497,9 +497,9 @@ local unzFile unzOpenInternal(const void *path, ZPOS64_T central_pos; uLong uL; - uLong number_disk; /* number of the current dist, used for + uLong number_disk; /* number of the current disk, used for spanning ZIP, unsupported, always 0*/ - uLong number_disk_with_CD; /* number the the disk with central dir, used + uLong number_disk_with_CD; /* number the disk with central dir, used for spanning ZIP, unsupported, always 0*/ ZPOS64_T number_entry_CD; /* total number of entries in the central dir diff --git a/third_party/zlib-1.3/contrib/minizip/unzip.h b/third_party/zlib-1.3.1/contrib/minizip/unzip.h similarity index 99% rename from third_party/zlib-1.3/contrib/minizip/unzip.h rename to third_party/zlib-1.3.1/contrib/minizip/unzip.h index 14105840..5cfc9c62 100644 --- a/third_party/zlib-1.3/contrib/minizip/unzip.h +++ b/third_party/zlib-1.3.1/contrib/minizip/unzip.h @@ -306,7 +306,7 @@ extern int ZEXPORT unzGetCurrentFileInfo(unzFile file, Get Info about the current file if pfile_info!=NULL, the *pfile_info structure will contain some info about the current file - if szFileName!=NULL, the filemane string will be copied in szFileName + if szFileName!=NULL, the filename string will be copied in szFileName (fileNameBufferSize is the size of the buffer) if extraField!=NULL, the extra field information will be copied in extraField (extraFieldBufferSize is the size of the buffer). diff --git a/third_party/zlib-1.3/contrib/minizip/zip.c b/third_party/zlib-1.3.1/contrib/minizip/zip.c similarity index 98% rename from third_party/zlib-1.3/contrib/minizip/zip.c rename to third_party/zlib-1.3.1/contrib/minizip/zip.c index 3d3d4cad..60bdffac 100644 --- a/third_party/zlib-1.3/contrib/minizip/zip.c +++ b/third_party/zlib-1.3.1/contrib/minizip/zip.c @@ -575,7 +575,7 @@ local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib if (zip64local_getLong(pzlib_filefunc_def,filestream,&uL)!=ZIP_OK) return 0; - /* number of the disk with the start of the zip64 end of central directory */ + /* number of the disk with the start of the zip64 end of central directory */ if (zip64local_getLong(pzlib_filefunc_def,filestream,&uL)!=ZIP_OK) return 0; if (uL != 0) @@ -614,9 +614,9 @@ local int LoadCentralDirectoryRecord(zip64_internal* pziinit) { ZPOS64_T central_pos; uLong uL; - uLong number_disk; /* number of the current dist, used for + uLong number_disk; /* number of the current disk, used for spanning ZIP, unsupported, always 0*/ - uLong number_disk_with_CD; /* number the the disk with central dir, used + uLong number_disk_with_CD; /* number of the disk with central dir, used for spanning ZIP, unsupported, always 0*/ ZPOS64_T number_entry; ZPOS64_T number_entry_CD; /* total number of entries in @@ -1043,6 +1043,17 @@ extern int ZEXPORT zipOpenNewFileInZip4_64(zipFile file, const char* filename, c return ZIP_PARAMERROR; #endif + // The filename and comment length must fit in 16 bits. + if ((filename!=NULL) && (strlen(filename)>0xffff)) + return ZIP_PARAMERROR; + if ((comment!=NULL) && (strlen(comment)>0xffff)) + return ZIP_PARAMERROR; + // The extra field length must fit in 16 bits. If the member also requires + // a Zip64 extra block, that will also need to fit within that 16-bit + // length, but that will be checked for later. + if ((size_extrafield_local>0xffff) || (size_extrafield_global>0xffff)) + return ZIP_PARAMERROR; + zi = (zip64_internal*)file; if (zi->in_opened_file_inzip == 1) @@ -1597,7 +1608,7 @@ extern int ZEXPORT zipCloseFileInZipRaw64(zipFile file, ZPOS64_T uncompressed_si if((uLong)(datasize + 4) > zi->ci.size_centralExtraFree) { - // we can not write more data to the buffer that we have room for. + // we cannot write more data to the buffer that we have room for. return ZIP_BADZIPFILE; } @@ -1861,7 +1872,7 @@ extern int ZEXPORT zipClose(zipFile file, const char* global_comment) { free_linkedlist(&(zi->central_dir)); pos = centraldir_pos_inzip - zi->add_position_when_writing_offset; - if(pos >= 0xffffffff || zi->number_entry > 0xFFFF) + if(pos >= 0xffffffff || zi->number_entry >= 0xFFFF) { ZPOS64_T Zip64EOCDpos = ZTELL64(zi->z_filefunc,zi->filestream); Write_Zip64EndOfCentralDirectoryRecord(zi, size_centraldir, centraldir_pos_inzip); diff --git a/third_party/zlib-1.3/contrib/minizip/zip.h b/third_party/zlib-1.3.1/contrib/minizip/zip.h similarity index 99% rename from third_party/zlib-1.3/contrib/minizip/zip.h rename to third_party/zlib-1.3.1/contrib/minizip/zip.h index 5fc08413..3e230d34 100644 --- a/third_party/zlib-1.3/contrib/minizip/zip.h +++ b/third_party/zlib-1.3.1/contrib/minizip/zip.h @@ -177,9 +177,9 @@ extern int ZEXPORT zipOpenNewFileInZip64(zipFile file, filename : the filename in zip (if NULL, '-' without quote will be used *zipfi contain supplemental information if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local - contains the extrafield data the the local header + contains the extrafield data for the local header if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global - contains the extrafield data the the local header + contains the extrafield data for the global header if comment != NULL, comment contain the comment string method contain the compression method (0 for store, Z_DEFLATED for deflate) level contain the level of compression (can be Z_DEFAULT_COMPRESSION) diff --git a/third_party/zlib-1.3.1/contrib/nuget/nuget.csproj b/third_party/zlib-1.3.1/contrib/nuget/nuget.csproj new file mode 100644 index 00000000..68627f03 --- /dev/null +++ b/third_party/zlib-1.3.1/contrib/nuget/nuget.csproj @@ -0,0 +1,43 @@ + + + + net6.0 + madler.zlib.redist + $(PackageId).win + $(PackageId).linux + $(PackageId).osx + (C) 1995-2024 Jean-loup Gailly and Mark Adler + 1.3.1 + NuGet Package for consuming native builds of zlib into .NET without complexity. + + NU5128 + $(MSBuildProjectDirectory) + Jean-loup Gailly and Mark Adler + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/third_party/zlib-1.3.1/contrib/nuget/nuget.sln b/third_party/zlib-1.3.1/contrib/nuget/nuget.sln new file mode 100644 index 00000000..46ee8dea --- /dev/null +++ b/third_party/zlib-1.3.1/contrib/nuget/nuget.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nuget", "nuget.csproj", "{B1BD3984-EF8F-4E9D-9A94-EB784E5EB1E8}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B1BD3984-EF8F-4E9D-9A94-EB784E5EB1E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B1BD3984-EF8F-4E9D-9A94-EB784E5EB1E8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B1BD3984-EF8F-4E9D-9A94-EB784E5EB1E8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B1BD3984-EF8F-4E9D-9A94-EB784E5EB1E8}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/third_party/zlib-1.3/contrib/pascal/example.pas b/third_party/zlib-1.3.1/contrib/pascal/example.pas similarity index 100% rename from third_party/zlib-1.3/contrib/pascal/example.pas rename to third_party/zlib-1.3.1/contrib/pascal/example.pas diff --git a/third_party/zlib-1.3/contrib/pascal/readme.txt b/third_party/zlib-1.3.1/contrib/pascal/readme.txt similarity index 100% rename from third_party/zlib-1.3/contrib/pascal/readme.txt rename to third_party/zlib-1.3.1/contrib/pascal/readme.txt diff --git a/third_party/zlib-1.3/contrib/pascal/zlibd32.mak b/third_party/zlib-1.3.1/contrib/pascal/zlibd32.mak similarity index 100% rename from third_party/zlib-1.3/contrib/pascal/zlibd32.mak rename to third_party/zlib-1.3.1/contrib/pascal/zlibd32.mak diff --git a/third_party/zlib-1.3/contrib/pascal/zlibpas.pas b/third_party/zlib-1.3.1/contrib/pascal/zlibpas.pas similarity index 99% rename from third_party/zlib-1.3/contrib/pascal/zlibpas.pas rename to third_party/zlib-1.3.1/contrib/pascal/zlibpas.pas index a2b24a59..0cf0e7b8 100644 --- a/third_party/zlib-1.3/contrib/pascal/zlibpas.pas +++ b/third_party/zlib-1.3.1/contrib/pascal/zlibpas.pas @@ -10,7 +10,7 @@ interface const - ZLIB_VERSION = '1.3.0'; + ZLIB_VERSION = '1.3.1'; ZLIB_VERNUM = $12a0; type diff --git a/third_party/zlib-1.3/contrib/puff/Makefile b/third_party/zlib-1.3.1/contrib/puff/Makefile similarity index 100% rename from third_party/zlib-1.3/contrib/puff/Makefile rename to third_party/zlib-1.3.1/contrib/puff/Makefile diff --git a/third_party/zlib-1.3/contrib/puff/README b/third_party/zlib-1.3.1/contrib/puff/README similarity index 100% rename from third_party/zlib-1.3/contrib/puff/README rename to third_party/zlib-1.3.1/contrib/puff/README diff --git a/third_party/zlib-1.3/contrib/puff/puff.c b/third_party/zlib-1.3.1/contrib/puff/puff.c similarity index 99% rename from third_party/zlib-1.3/contrib/puff/puff.c rename to third_party/zlib-1.3.1/contrib/puff/puff.c index 6737ff61..d759825a 100644 --- a/third_party/zlib-1.3/contrib/puff/puff.c +++ b/third_party/zlib-1.3.1/contrib/puff/puff.c @@ -593,10 +593,10 @@ local int fixed(struct state *s) * provided for each of the literal/length symbols, and for each of the * distance symbols. * - * - If a symbol is not used in the block, this is represented by a zero as - * as the code length. This does not mean a zero-length code, but rather - * that no code should be created for this symbol. There is no way in the - * deflate format to represent a zero-length code. + * - If a symbol is not used in the block, this is represented by a zero as the + * code length. This does not mean a zero-length code, but rather that no + * code should be created for this symbol. There is no way in the deflate + * format to represent a zero-length code. * * - The maximum number of bits in a code is 15, so the possible lengths for * any code are 1..15. diff --git a/third_party/zlib-1.3/contrib/puff/puff.h b/third_party/zlib-1.3.1/contrib/puff/puff.h similarity index 100% rename from third_party/zlib-1.3/contrib/puff/puff.h rename to third_party/zlib-1.3.1/contrib/puff/puff.h diff --git a/third_party/zlib-1.3/contrib/puff/pufftest.c b/third_party/zlib-1.3.1/contrib/puff/pufftest.c similarity index 100% rename from third_party/zlib-1.3/contrib/puff/pufftest.c rename to third_party/zlib-1.3.1/contrib/puff/pufftest.c diff --git a/third_party/zlib-1.3/contrib/puff/zeros.raw b/third_party/zlib-1.3.1/contrib/puff/zeros.raw similarity index 100% rename from third_party/zlib-1.3/contrib/puff/zeros.raw rename to third_party/zlib-1.3.1/contrib/puff/zeros.raw diff --git a/third_party/zlib-1.3/contrib/testzlib/testzlib.c b/third_party/zlib-1.3.1/contrib/testzlib/testzlib.c similarity index 100% rename from third_party/zlib-1.3/contrib/testzlib/testzlib.c rename to third_party/zlib-1.3.1/contrib/testzlib/testzlib.c diff --git a/third_party/zlib-1.3/contrib/testzlib/testzlib.txt b/third_party/zlib-1.3.1/contrib/testzlib/testzlib.txt similarity index 100% rename from third_party/zlib-1.3/contrib/testzlib/testzlib.txt rename to third_party/zlib-1.3.1/contrib/testzlib/testzlib.txt diff --git a/third_party/zlib-1.3/contrib/untgz/Makefile b/third_party/zlib-1.3.1/contrib/untgz/Makefile similarity index 100% rename from third_party/zlib-1.3/contrib/untgz/Makefile rename to third_party/zlib-1.3.1/contrib/untgz/Makefile diff --git a/third_party/zlib-1.3/contrib/untgz/Makefile.msc b/third_party/zlib-1.3.1/contrib/untgz/Makefile.msc similarity index 100% rename from third_party/zlib-1.3/contrib/untgz/Makefile.msc rename to third_party/zlib-1.3.1/contrib/untgz/Makefile.msc diff --git a/third_party/zlib-1.3/contrib/untgz/untgz.c b/third_party/zlib-1.3.1/contrib/untgz/untgz.c similarity index 100% rename from third_party/zlib-1.3/contrib/untgz/untgz.c rename to third_party/zlib-1.3.1/contrib/untgz/untgz.c diff --git a/third_party/zlib-1.3/contrib/vstudio/readme.txt b/third_party/zlib-1.3.1/contrib/vstudio/readme.txt similarity index 88% rename from third_party/zlib-1.3/contrib/vstudio/readme.txt rename to third_party/zlib-1.3.1/contrib/vstudio/readme.txt index 8f6a677c..061bbc0e 100644 --- a/third_party/zlib-1.3/contrib/vstudio/readme.txt +++ b/third_party/zlib-1.3.1/contrib/vstudio/readme.txt @@ -1,4 +1,4 @@ -Building instructions for the DLL versions of Zlib 1.3.0 +Building instructions for the DLL versions of Zlib 1.3.1 ======================================================== This directory contains projects that build zlib and minizip using @@ -40,6 +40,12 @@ Build instructions for Visual Studio 2015 (32 bits or 64 bits) - Decompress current zlib, including all contrib/* files - Open contrib\vstudio\vc14\zlibvc.sln with Microsoft Visual C++ 2015 +Build instructions for Visual Studio 2022 (64 bits) +-------------------------------------------------------------- +- Decompress current zlib, including all contrib/* files +- Open contrib\vstudio\vc143\zlibvc.sln with Microsoft Visual C++ 2022 + + Important --------- @@ -71,5 +77,5 @@ Additional notes Gilles Vollant info@winimage.com -Visual Studio 2013 and 2015 Projects from Sean Hunt +Visual Studio 2013, 2015, and 2022 Projects from Sean Hunt seandhunt_7@yahoo.com diff --git a/third_party/zlib-1.3/contrib/vstudio/vc10/miniunz.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc10/miniunz.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc10/miniunz.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc10/miniunz.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc10/miniunz.vcxproj.filters b/third_party/zlib-1.3.1/contrib/vstudio/vc10/miniunz.vcxproj.filters similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc10/miniunz.vcxproj.filters rename to third_party/zlib-1.3.1/contrib/vstudio/vc10/miniunz.vcxproj.filters diff --git a/third_party/zlib-1.3/contrib/vstudio/vc10/minizip.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc10/minizip.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc10/minizip.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc10/minizip.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc10/minizip.vcxproj.filters b/third_party/zlib-1.3.1/contrib/vstudio/vc10/minizip.vcxproj.filters similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc10/minizip.vcxproj.filters rename to third_party/zlib-1.3.1/contrib/vstudio/vc10/minizip.vcxproj.filters diff --git a/third_party/zlib-1.3/contrib/vstudio/vc10/testzlib.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc10/testzlib.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc10/testzlib.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc10/testzlib.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc10/testzlib.vcxproj.filters b/third_party/zlib-1.3.1/contrib/vstudio/vc10/testzlib.vcxproj.filters similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc10/testzlib.vcxproj.filters rename to third_party/zlib-1.3.1/contrib/vstudio/vc10/testzlib.vcxproj.filters diff --git a/third_party/zlib-1.3/contrib/vstudio/vc10/testzlibdll.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc10/testzlibdll.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc10/testzlibdll.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc10/testzlibdll.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc10/testzlibdll.vcxproj.filters b/third_party/zlib-1.3.1/contrib/vstudio/vc10/testzlibdll.vcxproj.filters similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc10/testzlibdll.vcxproj.filters rename to third_party/zlib-1.3.1/contrib/vstudio/vc10/testzlibdll.vcxproj.filters diff --git a/third_party/zlib-1.3/contrib/vstudio/vc11/zlib.rc b/third_party/zlib-1.3.1/contrib/vstudio/vc10/zlib.rc similarity index 83% rename from third_party/zlib-1.3/contrib/vstudio/vc11/zlib.rc rename to third_party/zlib-1.3.1/contrib/vstudio/vc10/zlib.rc index 57fb31a3..a55f341c 100644 --- a/third_party/zlib-1.3/contrib/vstudio/vc11/zlib.rc +++ b/third_party/zlib-1.3.1/contrib/vstudio/vc10/zlib.rc @@ -2,8 +2,8 @@ #define IDR_VERSION1 1 IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE - FILEVERSION 1, 3, 0, 0 - PRODUCTVERSION 1, 3, 0, 0 + FILEVERSION 1, 3, 1, 0 + PRODUCTVERSION 1, 3, 1, 0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK FILEFLAGS 0 FILEOS VOS_DOS_WINDOWS32 @@ -17,12 +17,12 @@ BEGIN BEGIN VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" - VALUE "FileVersion", "1.3.0\0" + VALUE "FileVersion", "1.3.1\0" VALUE "InternalName", "zlib\0" VALUE "OriginalFilename", "zlibwapi.dll\0" VALUE "ProductName", "ZLib.DLL\0" VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" - VALUE "LegalCopyright", "(C) 1995-2023 Jean-loup Gailly & Mark Adler\0" + VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0" END END BLOCK "VarFileInfo" diff --git a/third_party/zlib-1.3/contrib/vstudio/vc10/zlibstat.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc10/zlibstat.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc10/zlibstat.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc10/zlibstat.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc10/zlibstat.vcxproj.filters b/third_party/zlib-1.3.1/contrib/vstudio/vc10/zlibstat.vcxproj.filters similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc10/zlibstat.vcxproj.filters rename to third_party/zlib-1.3.1/contrib/vstudio/vc10/zlibstat.vcxproj.filters diff --git a/third_party/zlib-1.3/contrib/vstudio/vc14/zlibvc.def b/third_party/zlib-1.3.1/contrib/vstudio/vc10/zlibvc.def similarity index 99% rename from third_party/zlib-1.3/contrib/vstudio/vc14/zlibvc.def rename to third_party/zlib-1.3.1/contrib/vstudio/vc10/zlibvc.def index c3492350..53947cc3 100644 --- a/third_party/zlib-1.3/contrib/vstudio/vc14/zlibvc.def +++ b/third_party/zlib-1.3.1/contrib/vstudio/vc10/zlibvc.def @@ -1,7 +1,7 @@ LIBRARY ; zlib data compression and ZIP file I/O library -VERSION 1.3 +VERSION 1.3.1 EXPORTS adler32 @1 diff --git a/third_party/zlib-1.3/contrib/vstudio/vc10/zlibvc.sln b/third_party/zlib-1.3.1/contrib/vstudio/vc10/zlibvc.sln similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc10/zlibvc.sln rename to third_party/zlib-1.3.1/contrib/vstudio/vc10/zlibvc.sln diff --git a/third_party/zlib-1.3/contrib/vstudio/vc10/zlibvc.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc10/zlibvc.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc10/zlibvc.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc10/zlibvc.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc10/zlibvc.vcxproj.filters b/third_party/zlib-1.3.1/contrib/vstudio/vc10/zlibvc.vcxproj.filters similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc10/zlibvc.vcxproj.filters rename to third_party/zlib-1.3.1/contrib/vstudio/vc10/zlibvc.vcxproj.filters diff --git a/third_party/zlib-1.3/contrib/vstudio/vc11/miniunz.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc11/miniunz.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc11/miniunz.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc11/miniunz.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc11/minizip.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc11/minizip.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc11/minizip.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc11/minizip.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc11/testzlib.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc11/testzlib.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc11/testzlib.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc11/testzlib.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc11/testzlibdll.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc11/testzlibdll.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc11/testzlibdll.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc11/testzlibdll.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc12/zlib.rc b/third_party/zlib-1.3.1/contrib/vstudio/vc11/zlib.rc similarity index 83% rename from third_party/zlib-1.3/contrib/vstudio/vc12/zlib.rc rename to third_party/zlib-1.3.1/contrib/vstudio/vc11/zlib.rc index 57fb31a3..a55f341c 100644 --- a/third_party/zlib-1.3/contrib/vstudio/vc12/zlib.rc +++ b/third_party/zlib-1.3.1/contrib/vstudio/vc11/zlib.rc @@ -2,8 +2,8 @@ #define IDR_VERSION1 1 IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE - FILEVERSION 1, 3, 0, 0 - PRODUCTVERSION 1, 3, 0, 0 + FILEVERSION 1, 3, 1, 0 + PRODUCTVERSION 1, 3, 1, 0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK FILEFLAGS 0 FILEOS VOS_DOS_WINDOWS32 @@ -17,12 +17,12 @@ BEGIN BEGIN VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" - VALUE "FileVersion", "1.3.0\0" + VALUE "FileVersion", "1.3.1\0" VALUE "InternalName", "zlib\0" VALUE "OriginalFilename", "zlibwapi.dll\0" VALUE "ProductName", "ZLib.DLL\0" VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" - VALUE "LegalCopyright", "(C) 1995-2023 Jean-loup Gailly & Mark Adler\0" + VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0" END END BLOCK "VarFileInfo" diff --git a/third_party/zlib-1.3/contrib/vstudio/vc11/zlibstat.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc11/zlibstat.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc11/zlibstat.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc11/zlibstat.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc11/zlibvc.def b/third_party/zlib-1.3.1/contrib/vstudio/vc11/zlibvc.def similarity index 99% rename from third_party/zlib-1.3/contrib/vstudio/vc11/zlibvc.def rename to third_party/zlib-1.3.1/contrib/vstudio/vc11/zlibvc.def index c3492350..53947cc3 100644 --- a/third_party/zlib-1.3/contrib/vstudio/vc11/zlibvc.def +++ b/third_party/zlib-1.3.1/contrib/vstudio/vc11/zlibvc.def @@ -1,7 +1,7 @@ LIBRARY ; zlib data compression and ZIP file I/O library -VERSION 1.3 +VERSION 1.3.1 EXPORTS adler32 @1 diff --git a/third_party/zlib-1.3/contrib/vstudio/vc11/zlibvc.sln b/third_party/zlib-1.3.1/contrib/vstudio/vc11/zlibvc.sln similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc11/zlibvc.sln rename to third_party/zlib-1.3.1/contrib/vstudio/vc11/zlibvc.sln diff --git a/third_party/zlib-1.3/contrib/vstudio/vc11/zlibvc.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc11/zlibvc.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc11/zlibvc.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc11/zlibvc.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc12/miniunz.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc12/miniunz.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc12/miniunz.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc12/miniunz.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc12/minizip.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc12/minizip.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc12/minizip.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc12/minizip.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc12/testzlib.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc12/testzlib.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc12/testzlib.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc12/testzlib.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc12/testzlibdll.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc12/testzlibdll.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc12/testzlibdll.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc12/testzlibdll.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc10/zlib.rc b/third_party/zlib-1.3.1/contrib/vstudio/vc12/zlib.rc similarity index 83% rename from third_party/zlib-1.3/contrib/vstudio/vc10/zlib.rc rename to third_party/zlib-1.3.1/contrib/vstudio/vc12/zlib.rc index 57fb31a3..a55f341c 100644 --- a/third_party/zlib-1.3/contrib/vstudio/vc10/zlib.rc +++ b/third_party/zlib-1.3.1/contrib/vstudio/vc12/zlib.rc @@ -2,8 +2,8 @@ #define IDR_VERSION1 1 IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE - FILEVERSION 1, 3, 0, 0 - PRODUCTVERSION 1, 3, 0, 0 + FILEVERSION 1, 3, 1, 0 + PRODUCTVERSION 1, 3, 1, 0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK FILEFLAGS 0 FILEOS VOS_DOS_WINDOWS32 @@ -17,12 +17,12 @@ BEGIN BEGIN VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" - VALUE "FileVersion", "1.3.0\0" + VALUE "FileVersion", "1.3.1\0" VALUE "InternalName", "zlib\0" VALUE "OriginalFilename", "zlibwapi.dll\0" VALUE "ProductName", "ZLib.DLL\0" VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" - VALUE "LegalCopyright", "(C) 1995-2023 Jean-loup Gailly & Mark Adler\0" + VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0" END END BLOCK "VarFileInfo" diff --git a/third_party/zlib-1.3/contrib/vstudio/vc12/zlibstat.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc12/zlibstat.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc12/zlibstat.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc12/zlibstat.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc12/zlibvc.def b/third_party/zlib-1.3.1/contrib/vstudio/vc12/zlibvc.def similarity index 99% rename from third_party/zlib-1.3/contrib/vstudio/vc12/zlibvc.def rename to third_party/zlib-1.3.1/contrib/vstudio/vc12/zlibvc.def index c3492350..53947cc3 100644 --- a/third_party/zlib-1.3/contrib/vstudio/vc12/zlibvc.def +++ b/third_party/zlib-1.3.1/contrib/vstudio/vc12/zlibvc.def @@ -1,7 +1,7 @@ LIBRARY ; zlib data compression and ZIP file I/O library -VERSION 1.3 +VERSION 1.3.1 EXPORTS adler32 @1 diff --git a/third_party/zlib-1.3/contrib/vstudio/vc12/zlibvc.sln b/third_party/zlib-1.3.1/contrib/vstudio/vc12/zlibvc.sln similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc12/zlibvc.sln rename to third_party/zlib-1.3.1/contrib/vstudio/vc12/zlibvc.sln diff --git a/third_party/zlib-1.3/contrib/vstudio/vc12/zlibvc.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc12/zlibvc.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc12/zlibvc.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc12/zlibvc.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc14/miniunz.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc14/miniunz.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc14/miniunz.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc14/miniunz.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc14/minizip.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc14/minizip.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc14/minizip.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc14/minizip.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc14/testzlib.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc14/testzlib.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc14/testzlib.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc14/testzlib.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc14/testzlibdll.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc14/testzlibdll.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc14/testzlibdll.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc14/testzlibdll.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc14/zlib.rc b/third_party/zlib-1.3.1/contrib/vstudio/vc14/zlib.rc similarity index 83% rename from third_party/zlib-1.3/contrib/vstudio/vc14/zlib.rc rename to third_party/zlib-1.3.1/contrib/vstudio/vc14/zlib.rc index 57fb31a3..a55f341c 100644 --- a/third_party/zlib-1.3/contrib/vstudio/vc14/zlib.rc +++ b/third_party/zlib-1.3.1/contrib/vstudio/vc14/zlib.rc @@ -2,8 +2,8 @@ #define IDR_VERSION1 1 IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE - FILEVERSION 1, 3, 0, 0 - PRODUCTVERSION 1, 3, 0, 0 + FILEVERSION 1, 3, 1, 0 + PRODUCTVERSION 1, 3, 1, 0 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK FILEFLAGS 0 FILEOS VOS_DOS_WINDOWS32 @@ -17,12 +17,12 @@ BEGIN BEGIN VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" - VALUE "FileVersion", "1.3.0\0" + VALUE "FileVersion", "1.3.1\0" VALUE "InternalName", "zlib\0" VALUE "OriginalFilename", "zlibwapi.dll\0" VALUE "ProductName", "ZLib.DLL\0" VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" - VALUE "LegalCopyright", "(C) 1995-2023 Jean-loup Gailly & Mark Adler\0" + VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0" END END BLOCK "VarFileInfo" diff --git a/third_party/zlib-1.3/contrib/vstudio/vc14/zlibstat.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc14/zlibstat.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc14/zlibstat.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc14/zlibstat.vcxproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc10/zlibvc.def b/third_party/zlib-1.3.1/contrib/vstudio/vc14/zlibvc.def similarity index 99% rename from third_party/zlib-1.3/contrib/vstudio/vc10/zlibvc.def rename to third_party/zlib-1.3.1/contrib/vstudio/vc14/zlibvc.def index c3492350..53947cc3 100644 --- a/third_party/zlib-1.3/contrib/vstudio/vc10/zlibvc.def +++ b/third_party/zlib-1.3.1/contrib/vstudio/vc14/zlibvc.def @@ -1,7 +1,7 @@ LIBRARY ; zlib data compression and ZIP file I/O library -VERSION 1.3 +VERSION 1.3.1 EXPORTS adler32 @1 diff --git a/third_party/zlib-1.3/contrib/vstudio/vc14/zlibvc.sln b/third_party/zlib-1.3.1/contrib/vstudio/vc14/zlibvc.sln similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc14/zlibvc.sln rename to third_party/zlib-1.3.1/contrib/vstudio/vc14/zlibvc.sln diff --git a/third_party/zlib-1.3/contrib/vstudio/vc14/zlibvc.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc14/zlibvc.vcxproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc14/zlibvc.vcxproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc14/zlibvc.vcxproj diff --git a/third_party/zlib-1.3.1/contrib/vstudio/vc17/miniunz.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc17/miniunz.vcxproj new file mode 100644 index 00000000..68ef1658 --- /dev/null +++ b/third_party/zlib-1.3.1/contrib/vstudio/vc17/miniunz.vcxproj @@ -0,0 +1,409 @@ + + + + + Debug + ARM + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release + ARM + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {C52F9E7B-498A-42BE-8DB4-85A15694382A} + Win32Proj + 10.0 + + + + Application + MultiByte + v143 + + + Application + Unicode + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30128.1 + x86\MiniUnzip$(Configuration)\ + x86\MiniUnzip$(Configuration)\Tmp\ + true + false + x86\MiniUnzip$(Configuration)\ + x86\MiniUnzip$(Configuration)\Tmp\ + false + false + x64\MiniUnzip$(Configuration)\ + x64\MiniUnzip$(Configuration)\Tmp\ + true + true + true + false + false + false + x64\MiniUnzip$(Configuration)\ + x64\MiniUnzip$(Configuration)\Tmp\ + false + false + false + false + false + false + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + + + arm64\MiniUnzip$(Configuration)\ + arm64\MiniUnzip$(Configuration)\Tmp\ + + + arm64\MiniUnzip$(Configuration)\ + arm64\MiniUnzip$(Configuration)\Tmp\ + + + arm\MiniUnzip$(Configuration)\ + arm\MiniUnzip$(Configuration)\Tmp\ + + + arm\MiniUnzip$(Configuration)\ + arm\MiniUnzip$(Configuration)\Tmp\ + + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)miniunz.exe + true + $(OutDir)miniunz.pdb + Console + false + + + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + Default + MultiThreaded + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)miniunz.exe + true + Console + true + true + false + + + MachineX86 + + + + + X64 + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)miniunz.exe + true + $(OutDir)miniunz.pdb + Console + MachineX64 + + + + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)miniunz.exe + true + $(OutDir)miniunz.pdb + Console + + + + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)miniunz.exe + true + $(OutDir)miniunz.pdb + Console + + + + + X64 + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDLL + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)miniunz.exe + true + Console + true + true + MachineX64 + + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDLL + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)miniunz.exe + true + Console + true + true + + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDLL + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)miniunz.exe + true + Console + true + true + + + + + + + + {8fd826f8-3739-44e6-8cc8-997122e53b8d} + + + + + + \ No newline at end of file diff --git a/third_party/zlib-1.3.1/contrib/vstudio/vc17/minizip.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc17/minizip.vcxproj new file mode 100644 index 00000000..dd3c52e7 --- /dev/null +++ b/third_party/zlib-1.3.1/contrib/vstudio/vc17/minizip.vcxproj @@ -0,0 +1,405 @@ + + + + + Debug + ARM + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release + ARM + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B} + Win32Proj + 10.0 + + + + Application + MultiByte + v143 + + + Application + Unicode + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30128.1 + x86\MiniZip$(Configuration)\ + x86\MiniZip$(Configuration)\Tmp\ + true + false + x86\MiniZip$(Configuration)\ + x86\MiniZip$(Configuration)\Tmp\ + false + x64\$(Configuration)\ + x64\$(Configuration)\ + true + true + true + false + false + false + x64\$(Configuration)\ + x64\$(Configuration)\ + false + false + false + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + + + arm64\MiniZip$(Configuration)\ + arm64\MiniZip$(Configuration)\Tmp\ + + + arm64\MiniZip$(Configuration)\ + arm64\MiniZip$(Configuration)\Tmp\ + + + arm\MiniZip$(Configuration)\ + arm\MiniZip$(Configuration)\Tmp\ + + + arm\MiniZip$(Configuration)\ + arm\MiniZip$(Configuration)\Tmp\ + + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)minizip.exe + true + $(OutDir)minizip.pdb + Console + false + + + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + Default + MultiThreaded + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)minizip.exe + true + Console + true + true + false + + + MachineX86 + + + + + X64 + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)minizip.exe + true + $(OutDir)minizip.pdb + Console + MachineX64 + + + + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)minizip.exe + true + $(OutDir)minizip.pdb + Console + + + + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)minizip.exe + true + $(OutDir)minizip.pdb + Console + + + + + X64 + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDLL + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)minizip.exe + true + Console + true + true + MachineX64 + + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDLL + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)minizip.exe + true + Console + true + true + + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDLL + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)minizip.exe + true + Console + true + true + + + + + + + + {8fd826f8-3739-44e6-8cc8-997122e53b8d} + + + + + + \ No newline at end of file diff --git a/third_party/zlib-1.3.1/contrib/vstudio/vc17/testzlib.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc17/testzlib.vcxproj new file mode 100644 index 00000000..4cc99b3f --- /dev/null +++ b/third_party/zlib-1.3.1/contrib/vstudio/vc17/testzlib.vcxproj @@ -0,0 +1,473 @@ + + + + + Debug + ARM + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + ReleaseWithoutAsm + ARM + + + ReleaseWithoutAsm + ARM64 + + + ReleaseWithoutAsm + Win32 + + + ReleaseWithoutAsm + x64 + + + Release + ARM + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B} + testzlib + Win32Proj + 10.0 + + + + Application + MultiByte + true + v143 + + + Application + MultiByte + true + v143 + + + Application + Unicode + v143 + + + Application + true + v143 + + + Application + true + v143 + + + Application + true + v143 + + + Application + true + v143 + + + Application + true + v143 + + + Application + true + v143 + + + Application + v143 + + + Application + v143 + + + Application + v143 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30128.1 + x86\TestZlib$(Configuration)\ + x86\TestZlib$(Configuration)\Tmp\ + true + false + x86\TestZlib$(Configuration)\ + x86\TestZlib$(Configuration)\Tmp\ + false + false + x86\TestZlib$(Configuration)\ + x86\TestZlib$(Configuration)\Tmp\ + false + false + x64\TestZlib$(Configuration)\ + x64\TestZlib$(Configuration)\Tmp\ + false + false + false + x64\TestZlib$(Configuration)\ + x64\TestZlib$(Configuration)\Tmp\ + false + false + false + x64\TestZlib$(Configuration)\ + x64\TestZlib$(Configuration)\Tmp\ + false + false + false + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + + + arm64\TestZlib$(Configuration)\ + arm64\TestZlib$(Configuration)\Tmp\ + + + arm64\TestZlib$(Configuration)\ + arm64\TestZlib$(Configuration)\Tmp\ + + + arm64\TestZlib$(Configuration)\ + arm64\TestZlib$(Configuration)\Tmp\ + + + arm\TestZlib$(Configuration)\ + arm\TestZlib$(Configuration)\Tmp\ + + + arm\TestZlib$(Configuration)\ + arm\TestZlib$(Configuration)\Tmp\ + + + arm\TestZlib$(Configuration)\ + arm\TestZlib$(Configuration)\Tmp\ + + + + Disabled + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + AssemblyAndSourceCode + $(IntDir) + Level3 + ProgramDatabase + + + %(AdditionalDependencies) + $(OutDir)testzlib.exe + true + $(OutDir)testzlib.pdb + Console + false + + + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + true + Default + MultiThreaded + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + $(OutDir)testzlib.exe + true + Console + true + true + false + + + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + true + Default + MultiThreaded + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + %(AdditionalDependencies) + $(OutDir)testzlib.exe + true + Console + true + true + false + + + MachineX86 + false + + + + + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreadedDebugDLL + false + $(IntDir) + + + %(AdditionalDependencies) + + + + + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreadedDebugDLL + false + $(IntDir) + + + %(AdditionalDependencies) + + + + + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreadedDebugDLL + false + $(IntDir) + + + %(AdditionalDependencies) + + + + + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreadedDLL + false + $(IntDir) + + + %(AdditionalDependencies) + + + + + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreadedDLL + false + $(IntDir) + + + %(AdditionalDependencies) + + + + + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreadedDLL + false + $(IntDir) + + + %(AdditionalDependencies) + + + + + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreadedDLL + false + $(IntDir) + + + %(AdditionalDependencies) + + + + + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreadedDLL + false + $(IntDir) + + + %(AdditionalDependencies) + + + + + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + Default + MultiThreadedDLL + false + $(IntDir) + + + %(AdditionalDependencies) + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/third_party/zlib-1.3.1/contrib/vstudio/vc17/testzlibdll.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc17/testzlibdll.vcxproj new file mode 100644 index 00000000..73bba55d --- /dev/null +++ b/third_party/zlib-1.3.1/contrib/vstudio/vc17/testzlibdll.vcxproj @@ -0,0 +1,409 @@ + + + + + Debug + ARM + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release + ARM + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {C52F9E7B-498A-42BE-8DB4-85A15694366A} + Win32Proj + 10.0 + + + + Application + MultiByte + v143 + + + Application + Unicode + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30128.1 + x86\TestZlibDll$(Configuration)\ + x86\TestZlibDll$(Configuration)\Tmp\ + true + false + x86\TestZlibDll$(Configuration)\ + x86\TestZlibDll$(Configuration)\Tmp\ + false + false + x64\TestZlibDll$(Configuration)\ + x64\TestZlibDll$(Configuration)\Tmp\ + true + true + true + false + false + false + x64\TestZlibDll$(Configuration)\ + x64\TestZlibDll$(Configuration)\Tmp\ + false + false + false + false + false + false + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + + + arm64\TestZlibDll$(Configuration)\ + arm64\TestZlibDll$(Configuration)\Tmp\ + + + arm64\TestZlibDll$(Configuration)\ + arm64\TestZlibDll$(Configuration)\Tmp\ + + + arm\TestZlibDll$(Configuration)\ + arm\TestZlibDll$(Configuration)\Tmp\ + + + arm\TestZlibDll$(Configuration)\ + arm\TestZlibDll$(Configuration)\Tmp\ + + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)testzlibdll.exe + true + $(OutDir)testzlib.pdb + Console + false + + + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + Default + MultiThreaded + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)testzlibdll.exe + true + Console + true + true + false + + + MachineX86 + + + + + X64 + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)testzlibdll.exe + true + $(OutDir)testzlib.pdb + Console + MachineX64 + + + + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)testzlibdll.exe + true + $(OutDir)testzlib.pdb + Console + + + + + + Disabled + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDebugDLL + false + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)testzlibdll.exe + true + $(OutDir)testzlib.pdb + Console + + + + + X64 + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDLL + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)testzlibdll.exe + true + Console + true + true + MachineX64 + + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDLL + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)testzlibdll.exe + true + Console + true + true + + + + + + MaxSpeed + OnlyExplicitInline + true + ..\..\..;..\..\minizip;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions) + true + Default + MultiThreadedDLL + false + true + + + $(IntDir) + Level3 + ProgramDatabase + + + x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies) + $(OutDir)testzlibdll.exe + true + Console + true + true + + + + + + + + {8fd826f8-3739-44e6-8cc8-997122e53b8d} + + + + + + \ No newline at end of file diff --git a/third_party/zlib-1.3.1/contrib/vstudio/vc17/zlib.rc b/third_party/zlib-1.3.1/contrib/vstudio/vc17/zlib.rc new file mode 100644 index 00000000..a55f341c --- /dev/null +++ b/third_party/zlib-1.3.1/contrib/vstudio/vc17/zlib.rc @@ -0,0 +1,32 @@ +#include + +#define IDR_VERSION1 1 +IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE + FILEVERSION 1, 3, 1, 0 + PRODUCTVERSION 1, 3, 1, 0 + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK + FILEFLAGS 0 + FILEOS VOS_DOS_WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE 0 // not used +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + //language ID = U.S. English, char set = Windows, Multilingual + + BEGIN + VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" + VALUE "FileVersion", "1.3.1\0" + VALUE "InternalName", "zlib\0" + VALUE "OriginalFilename", "zlibwapi.dll\0" + VALUE "ProductName", "ZLib.DLL\0" + VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" + VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 1252 + END +END diff --git a/third_party/zlib-1.3.1/contrib/vstudio/vc17/zlibstat.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc17/zlibstat.vcxproj new file mode 100644 index 00000000..b946ac2a --- /dev/null +++ b/third_party/zlib-1.3.1/contrib/vstudio/vc17/zlibstat.vcxproj @@ -0,0 +1,602 @@ + + + + + Debug + ARM + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + ReleaseWithoutAsm + ARM + + + ReleaseWithoutAsm + ARM64 + + + ReleaseWithoutAsm + Win32 + + + ReleaseWithoutAsm + x64 + + + Release + ARM + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8} + 10.0 + + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + Unicode + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + + + StaticLibrary + false + v143 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30128.1 + x86\ZlibStat$(Configuration)\ + x86\ZlibStat$(Configuration)\Tmp\ + x86\ZlibStat$(Configuration)\ + x86\ZlibStat$(Configuration)\Tmp\ + x86\ZlibStat$(Configuration)\ + x86\ZlibStat$(Configuration)\Tmp\ + x64\ZlibStat$(Configuration)\ + x64\ZlibStat$(Configuration)\Tmp\ + x64\ZlibStat$(Configuration)\ + x64\ZlibStat$(Configuration)\Tmp\ + x64\ZlibStat$(Configuration)\ + x64\ZlibStat$(Configuration)\Tmp\ + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + + + arm64\ZlibStat$(Configuration)\ + arm64\ZlibStat$(Configuration)\Tmp\ + + + arm64\ZlibStat$(Configuration)\ + arm64\ZlibStat$(Configuration)\Tmp\ + + + arm64\ZlibStat$(Configuration)\ + arm64\ZlibStat$(Configuration)\Tmp\ + + + arm\ZlibStat$(Configuration)\ + arm\ZlibStat$(Configuration)\Tmp\ + + + arm\ZlibStat$(Configuration)\ + arm\ZlibStat$(Configuration)\Tmp\ + + + arm\ZlibStat$(Configuration)\ + arm\ZlibStat$(Configuration)\Tmp\ + + + + Disabled + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + + + MultiThreadedDebugDLL + false + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + OldStyle + + + 0x040c + + + /MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions) + $(OutDir)zlibstat.lib + true + + + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + true + + + MultiThreaded + false + true + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + + + 0x040c + + + /MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions) + %(AdditionalDependencies) + $(OutDir)zlibstat.lib + true + + + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + true + + + MultiThreaded + false + true + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + + + 0x040c + + + /MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions) + $(OutDir)zlibstat.lib + true + + + + + X64 + + + Disabled + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) + + + MultiThreadedDebugDLL + false + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + OldStyle + + + 0x040c + + + /MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions) + $(OutDir)zlibstat.lib + true + + + + + + Disabled + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) + + + MultiThreadedDebugDLL + false + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + OldStyle + + + 0x040c + + + /MACHINE:ARM64 /NODEFAULTLIB %(AdditionalOptions) + $(OutDir)zlibstat.lib + true + + + + + + Disabled + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) + + + MultiThreadedDebugDLL + false + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + OldStyle + + + 0x040c + + + /MACHINE:ARM /NODEFAULTLIB %(AdditionalOptions) + $(OutDir)zlibstat.lib + true + + + + + X64 + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + + + 0x040c + + + /MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions) + %(AdditionalDependencies) + $(OutDir)zlibstat.lib + true + + + + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + + + 0x040c + + + /MACHINE:ARM64 /NODEFAULTLIB %(AdditionalOptions) + %(AdditionalDependencies) + $(OutDir)zlibstat.lib + true + + + + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + + + 0x040c + + + /MACHINE:ARM /NODEFAULTLIB %(AdditionalOptions) + %(AdditionalDependencies) + $(OutDir)zlibstat.lib + true + + + + + X64 + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + + + 0x040c + + + /MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions) + $(OutDir)zlibstat.lib + true + + + + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + + + 0x040c + + + /MACHINE:ARM64 /NODEFAULTLIB %(AdditionalOptions) + $(OutDir)zlibstat.lib + true + + + + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibstat.pch + $(IntDir) + $(IntDir) + $(OutDir) + Level3 + true + + + 0x040c + + + /MACHINE:ARM /NODEFAULTLIB %(AdditionalOptions) + $(OutDir)zlibstat.lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/third_party/zlib-1.3.1/contrib/vstudio/vc17/zlibvc.def b/third_party/zlib-1.3.1/contrib/vstudio/vc17/zlibvc.def new file mode 100644 index 00000000..53947cc3 --- /dev/null +++ b/third_party/zlib-1.3.1/contrib/vstudio/vc17/zlibvc.def @@ -0,0 +1,158 @@ +LIBRARY +; zlib data compression and ZIP file I/O library + +VERSION 1.3.1 + +EXPORTS + adler32 @1 + compress @2 + crc32 @3 + deflate @4 + deflateCopy @5 + deflateEnd @6 + deflateInit2_ @7 + deflateInit_ @8 + deflateParams @9 + deflateReset @10 + deflateSetDictionary @11 + gzclose @12 + gzdopen @13 + gzerror @14 + gzflush @15 + gzopen @16 + gzread @17 + gzwrite @18 + inflate @19 + inflateEnd @20 + inflateInit2_ @21 + inflateInit_ @22 + inflateReset @23 + inflateSetDictionary @24 + inflateSync @25 + uncompress @26 + zlibVersion @27 + gzprintf @28 + gzputc @29 + gzgetc @30 + gzseek @31 + gzrewind @32 + gztell @33 + gzeof @34 + gzsetparams @35 + zError @36 + inflateSyncPoint @37 + get_crc_table @38 + compress2 @39 + gzputs @40 + gzgets @41 + inflateCopy @42 + inflateBackInit_ @43 + inflateBack @44 + inflateBackEnd @45 + compressBound @46 + deflateBound @47 + gzclearerr @48 + gzungetc @49 + zlibCompileFlags @50 + deflatePrime @51 + deflatePending @52 + + unzOpen @61 + unzClose @62 + unzGetGlobalInfo @63 + unzGetCurrentFileInfo @64 + unzGoToFirstFile @65 + unzGoToNextFile @66 + unzOpenCurrentFile @67 + unzReadCurrentFile @68 + unzOpenCurrentFile3 @69 + unztell @70 + unzeof @71 + unzCloseCurrentFile @72 + unzGetGlobalComment @73 + unzStringFileNameCompare @74 + unzLocateFile @75 + unzGetLocalExtrafield @76 + unzOpen2 @77 + unzOpenCurrentFile2 @78 + unzOpenCurrentFilePassword @79 + + zipOpen @80 + zipOpenNewFileInZip @81 + zipWriteInFileInZip @82 + zipCloseFileInZip @83 + zipClose @84 + zipOpenNewFileInZip2 @86 + zipCloseFileInZipRaw @87 + zipOpen2 @88 + zipOpenNewFileInZip3 @89 + + unzGetFilePos @100 + unzGoToFilePos @101 + + fill_win32_filefunc @110 + +; zlibwapi v1.2.4 added: + fill_win32_filefunc64 @111 + fill_win32_filefunc64A @112 + fill_win32_filefunc64W @113 + + unzOpen64 @120 + unzOpen2_64 @121 + unzGetGlobalInfo64 @122 + unzGetCurrentFileInfo64 @124 + unzGetCurrentFileZStreamPos64 @125 + unztell64 @126 + unzGetFilePos64 @127 + unzGoToFilePos64 @128 + + zipOpen64 @130 + zipOpen2_64 @131 + zipOpenNewFileInZip64 @132 + zipOpenNewFileInZip2_64 @133 + zipOpenNewFileInZip3_64 @134 + zipOpenNewFileInZip4_64 @135 + zipCloseFileInZipRaw64 @136 + +; zlib1 v1.2.4 added: + adler32_combine @140 + crc32_combine @142 + deflateSetHeader @144 + deflateTune @145 + gzbuffer @146 + gzclose_r @147 + gzclose_w @148 + gzdirect @149 + gzoffset @150 + inflateGetHeader @156 + inflateMark @157 + inflatePrime @158 + inflateReset2 @159 + inflateUndermine @160 + +; zlib1 v1.2.6 added: + gzgetc_ @161 + inflateResetKeep @163 + deflateResetKeep @164 + +; zlib1 v1.2.7 added: + gzopen_w @165 + +; zlib1 v1.2.8 added: + inflateGetDictionary @166 + gzvprintf @167 + +; zlib1 v1.2.9 added: + inflateCodesUsed @168 + inflateValidate @169 + uncompress2 @170 + gzfread @171 + gzfwrite @172 + deflateGetDictionary @173 + adler32_z @174 + crc32_z @175 + +; zlib1 v1.2.12 added: + crc32_combine_gen @176 + crc32_combine_gen64 @177 + crc32_combine_op @178 diff --git a/third_party/zlib-1.3.1/contrib/vstudio/vc17/zlibvc.sln b/third_party/zlib-1.3.1/contrib/vstudio/vc17/zlibvc.sln new file mode 100644 index 00000000..67896b74 --- /dev/null +++ b/third_party/zlib-1.3.1/contrib/vstudio/vc17/zlibvc.sln @@ -0,0 +1,179 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.4.33015.44 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibvc", "zlibvc.vcxproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibstat", "zlibstat.vcxproj", "{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testzlib", "testzlib.vcxproj", "{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testzlibdll", "testzlibdll.vcxproj", "{C52F9E7B-498A-42BE-8DB4-85A15694366A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "minizip.vcxproj", "{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "miniunz", "miniunz.vcxproj", "{C52F9E7B-498A-42BE-8DB4-85A15694382A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Debug|ARM64 = Debug|ARM64 + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|ARM = Release|ARM + Release|ARM64 = Release|ARM64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + ReleaseWithoutAsm|ARM = ReleaseWithoutAsm|ARM + ReleaseWithoutAsm|ARM64 = ReleaseWithoutAsm|ARM64 + ReleaseWithoutAsm|Win32 = ReleaseWithoutAsm|Win32 + ReleaseWithoutAsm|x64 = ReleaseWithoutAsm|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|ARM.ActiveCfg = Debug|ARM + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|ARM.Build.0 = Debug|ARM + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|ARM64.Build.0 = Debug|ARM64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.ActiveCfg = Debug|Win32 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.Build.0 = Debug|Win32 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.ActiveCfg = Debug|x64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.Build.0 = Debug|x64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|ARM.ActiveCfg = Release|ARM + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|ARM.Build.0 = Release|ARM + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|ARM64.ActiveCfg = Release|ARM64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|ARM64.Build.0 = Release|ARM64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.ActiveCfg = Release|Win32 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.Build.0 = Release|Win32 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.ActiveCfg = Release|x64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.Build.0 = Release|x64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|ARM.ActiveCfg = ReleaseWithoutAsm|ARM + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|ARM.Build.0 = ReleaseWithoutAsm|ARM + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|ARM64.ActiveCfg = ReleaseWithoutAsm|ARM64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|ARM64.Build.0 = ReleaseWithoutAsm|ARM64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64 + {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|ARM.ActiveCfg = Debug|ARM + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|ARM.Build.0 = Debug|ARM + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|ARM64.Build.0 = Debug|ARM64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.ActiveCfg = Debug|Win32 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.Build.0 = Debug|Win32 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.ActiveCfg = Debug|x64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.Build.0 = Debug|x64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|ARM.ActiveCfg = Release|ARM + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|ARM.Build.0 = Release|ARM + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|ARM64.ActiveCfg = Release|ARM64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|ARM64.Build.0 = Release|ARM64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.ActiveCfg = Release|Win32 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.Build.0 = Release|Win32 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.ActiveCfg = Release|x64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.Build.0 = Release|x64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|ARM.ActiveCfg = ReleaseWithoutAsm|ARM + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|ARM.Build.0 = ReleaseWithoutAsm|ARM + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|ARM64.ActiveCfg = ReleaseWithoutAsm|ARM64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|ARM64.Build.0 = ReleaseWithoutAsm|ARM64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64 + {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM.ActiveCfg = Debug|ARM + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM.Build.0 = Debug|ARM + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM64.Build.0 = Debug|ARM64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM.ActiveCfg = Release|ARM + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM.Build.0 = Release|ARM + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM64.ActiveCfg = Release|ARM64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM64.Build.0 = Release|ARM64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM.ActiveCfg = ReleaseWithoutAsm|ARM + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM.Build.0 = ReleaseWithoutAsm|ARM + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM64.ActiveCfg = ReleaseWithoutAsm|ARM64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM64.Build.0 = ReleaseWithoutAsm|ARM64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64 + {AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|ARM.ActiveCfg = Debug|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|ARM.Build.0 = Debug|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|ARM64.Build.0 = Debug|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.ActiveCfg = Debug|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.Build.0 = Debug|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.ActiveCfg = Debug|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.Build.0 = Debug|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|ARM.ActiveCfg = Release|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|ARM.Build.0 = Release|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|ARM64.ActiveCfg = Release|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|ARM64.Build.0 = Release|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.ActiveCfg = Release|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.Build.0 = Release|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.ActiveCfg = Release|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.Build.0 = Release|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|ARM.ActiveCfg = Release|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|ARM.Build.0 = Release|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|ARM64.ActiveCfg = Release|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|ARM64.Build.0 = Release|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM.ActiveCfg = Debug|ARM + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM.Build.0 = Debug|ARM + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM64.Build.0 = Debug|ARM64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM.ActiveCfg = Release|ARM + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM.Build.0 = Release|ARM + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM64.ActiveCfg = Release|ARM64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM64.Build.0 = Release|ARM64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM.ActiveCfg = Release|ARM + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM.Build.0 = Release|ARM + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM64.ActiveCfg = Release|ARM64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM64.Build.0 = Release|ARM64 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 + {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|ARM.ActiveCfg = Debug|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|ARM.Build.0 = Debug|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|ARM64.Build.0 = Debug|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.ActiveCfg = Debug|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.Build.0 = Debug|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.ActiveCfg = Debug|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.Build.0 = Debug|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|ARM.ActiveCfg = Release|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|ARM.Build.0 = Release|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|ARM64.ActiveCfg = Release|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|ARM64.Build.0 = Release|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.ActiveCfg = Release|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.Build.0 = Release|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.ActiveCfg = Release|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.Build.0 = Release|x64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|ARM.ActiveCfg = Release|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|ARM.Build.0 = Release|ARM + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|ARM64.ActiveCfg = Release|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|ARM64.Build.0 = Release|ARM64 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32 + {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {EAA58685-56D9-43F2-8703-FD2CB020745E} + EndGlobalSection +EndGlobal diff --git a/third_party/zlib-1.3.1/contrib/vstudio/vc17/zlibvc.vcxproj b/third_party/zlib-1.3.1/contrib/vstudio/vc17/zlibvc.vcxproj new file mode 100644 index 00000000..10a7a901 --- /dev/null +++ b/third_party/zlib-1.3.1/contrib/vstudio/vc17/zlibvc.vcxproj @@ -0,0 +1,875 @@ + + + + + Debug + ARM + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + ReleaseWithoutAsm + ARM + + + ReleaseWithoutAsm + ARM64 + + + ReleaseWithoutAsm + Win32 + + + ReleaseWithoutAsm + x64 + + + Release + ARM + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {8FD826F8-3739-44E6-8CC8-997122E53B8D} + 10.0 + + + + DynamicLibrary + false + true + v143 + + + DynamicLibrary + false + true + v143 + + + DynamicLibrary + false + v143 + Unicode + + + DynamicLibrary + false + true + v143 + + + DynamicLibrary + false + true + v143 + + + DynamicLibrary + false + true + v143 + + + DynamicLibrary + false + true + v143 + + + DynamicLibrary + false + true + v143 + + + DynamicLibrary + false + true + v143 + + + DynamicLibrary + false + v143 + + + DynamicLibrary + false + v143 + + + DynamicLibrary + false + v143 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30128.1 + x86\ZlibDll$(Configuration)\ + x86\ZlibDll$(Configuration)\Tmp\ + true + false + x86\ZlibDll$(Configuration)\ + x86\ZlibDll$(Configuration)\Tmp\ + false + false + x86\ZlibDll$(Configuration)\ + x86\ZlibDll$(Configuration)\Tmp\ + false + false + x64\ZlibDll$(Configuration)\ + x64\ZlibDll$(Configuration)\Tmp\ + true + true + true + false + false + false + x64\ZlibDll$(Configuration)\ + x64\ZlibDll$(Configuration)\Tmp\ + false + false + false + false + false + false + x64\ZlibDll$(Configuration)\ + x64\ZlibDll$(Configuration)\Tmp\ + false + false + false + false + false + false + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + zlibwapi + zlibwapi + zlibwapi + zlibwapi + zlibwapi + zlibwapi + zlibwapi + zlibwapi + zlibwapi + zlibwapi + zlibwapi + zlibwapi + + + arm64\ZlibDll$(Configuration)\ + arm64\ZlibDll$(Configuration)\Tmp\ + + + arm\ZlibDll$(Configuration)\ + arm\ZlibDll$(Configuration)\Tmp\ + + + arm64\ZlibDll$(Configuration)\ + arm64\ZlibDll$(Configuration)\Tmp\ + + + arm64\ZlibDll$(Configuration)\ + arm64\ZlibDll$(Configuration)\Tmp\ + + + arm\ZlibDll$(Configuration)\ + arm\ZlibDll$(Configuration)\Tmp\ + + + arm\ZlibDll$(Configuration)\ + arm\ZlibDll$(Configuration)\Tmp\ + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(OutDir)zlibvc.tlb + + + Disabled + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) + + + MultiThreadedDebugDLL + false + $(IntDir)zlibvc.pch + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x040c + + + /MACHINE:I386 %(AdditionalOptions) + %(AdditionalDependencies) + $(OutDir)zlibwapi.dll + true + .\zlibvc.def + true + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + false + + + $(OutDir)zlibwapi.lib + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(OutDir)zlibvc.tlb + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibvc.pch + All + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x040c + + + /MACHINE:I386 %(AdditionalOptions) + $(OutDir)zlibwapi.dll + true + false + .\zlibvc.def + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + false + + + $(OutDir)zlibwapi.lib + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + $(OutDir)zlibvc.tlb + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) + true + + + MultiThreaded + false + true + $(IntDir)zlibvc.pch + All + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x040c + + + /MACHINE:I386 %(AdditionalOptions) + %(AdditionalDependencies) + $(OutDir)zlibwapi.dll + true + false + .\zlibvc.def + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + false + + + $(OutDir)zlibwapi.lib + false + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(OutDir)zlibvc.tlb + + + Disabled + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) + + + MultiThreadedDebugDLL + false + $(IntDir)zlibvc.pch + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x040c + + + %(AdditionalDependencies) + $(OutDir)zlibwapi.dll + true + .\zlibvc.def + true + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + $(OutDir)zlibwapi.lib + MachineX64 + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + $(OutDir)zlibvc.tlb + + + Disabled + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) + + + MultiThreadedDebugDLL + false + $(IntDir)zlibvc.pch + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x040c + + + %(AdditionalDependencies) + $(OutDir)zlibwapi.dll + true + .\zlibvc.def + true + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + $(OutDir)zlibwapi.lib + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + $(OutDir)zlibvc.tlb + + + Disabled + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) + + + MultiThreadedDebugDLL + false + $(IntDir)zlibvc.pch + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x040c + + + %(AdditionalDependencies) + $(OutDir)zlibwapi.dll + true + .\zlibvc.def + true + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + $(OutDir)zlibwapi.lib + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(OutDir)zlibvc.tlb + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibvc.pch + All + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x040c + + + $(OutDir)zlibwapi.dll + true + false + .\zlibvc.def + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + $(OutDir)zlibwapi.lib + MachineX64 + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + $(OutDir)zlibvc.tlb + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibvc.pch + All + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x040c + + + $(OutDir)zlibwapi.dll + true + false + .\zlibvc.def + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + $(OutDir)zlibwapi.lib + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + $(OutDir)zlibvc.tlb + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibvc.pch + All + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x040c + + + $(OutDir)zlibwapi.dll + true + false + .\zlibvc.def + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + $(OutDir)zlibwapi.lib + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + $(OutDir)zlibvc.tlb + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibvc.pch + All + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x040c + + + %(AdditionalDependencies) + $(OutDir)zlibwapi.dll + true + false + .\zlibvc.def + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + $(OutDir)zlibwapi.lib + MachineX64 + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + $(OutDir)zlibvc.tlb + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibvc.pch + All + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x040c + + + %(AdditionalDependencies) + $(OutDir)zlibwapi.dll + true + false + .\zlibvc.def + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + $(OutDir)zlibwapi.lib + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + $(OutDir)zlibvc.tlb + + + OnlyExplicitInline + ..\..\..;%(AdditionalIncludeDirectories) + _CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN32;%(PreprocessorDefinitions) + true + + + MultiThreadedDLL + false + true + $(IntDir)zlibvc.pch + All + $(IntDir) + $(IntDir) + $(OutDir) + + + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x040c + + + %(AdditionalDependencies) + $(OutDir)zlibwapi.dll + true + false + .\zlibvc.def + $(OutDir)zlibwapi.pdb + true + $(OutDir)zlibwapi.map + Windows + $(OutDir)zlibwapi.lib + + + + + + + + + + + + + + + + + + + + + %(AdditionalIncludeDirectories) + ZLIB_INTERNAL;%(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(AdditionalIncludeDirectories) + %(AdditionalIncludeDirectories) + ZLIB_INTERNAL;%(PreprocessorDefinitions) + ZLIB_INTERNAL;%(PreprocessorDefinitions) + ZLIB_INTERNAL;%(PreprocessorDefinitions) + + + %(AdditionalIncludeDirectories) + ZLIB_INTERNAL;%(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(AdditionalIncludeDirectories) + %(AdditionalIncludeDirectories) + ZLIB_INTERNAL;%(PreprocessorDefinitions) + ZLIB_INTERNAL;%(PreprocessorDefinitions) + ZLIB_INTERNAL;%(PreprocessorDefinitions) + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/third_party/zlib-1.3/contrib/vstudio/vc9/miniunz.vcproj b/third_party/zlib-1.3.1/contrib/vstudio/vc9/miniunz.vcproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc9/miniunz.vcproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc9/miniunz.vcproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc9/minizip.vcproj b/third_party/zlib-1.3.1/contrib/vstudio/vc9/minizip.vcproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc9/minizip.vcproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc9/minizip.vcproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc9/testzlib.vcproj b/third_party/zlib-1.3.1/contrib/vstudio/vc9/testzlib.vcproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc9/testzlib.vcproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc9/testzlib.vcproj diff --git a/third_party/zlib-1.3/contrib/vstudio/vc9/testzlibdll.vcproj b/third_party/zlib-1.3.1/contrib/vstudio/vc9/testzlibdll.vcproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc9/testzlibdll.vcproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc9/testzlibdll.vcproj diff --git a/third_party/zlib-1.3.1/contrib/vstudio/vc9/zlib.rc b/third_party/zlib-1.3.1/contrib/vstudio/vc9/zlib.rc new file mode 100644 index 00000000..a55f341c --- /dev/null +++ b/third_party/zlib-1.3.1/contrib/vstudio/vc9/zlib.rc @@ -0,0 +1,32 @@ +#include + +#define IDR_VERSION1 1 +IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE + FILEVERSION 1, 3, 1, 0 + PRODUCTVERSION 1, 3, 1, 0 + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK + FILEFLAGS 0 + FILEOS VOS_DOS_WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE 0 // not used +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + //language ID = U.S. English, char set = Windows, Multilingual + + BEGIN + VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" + VALUE "FileVersion", "1.3.1\0" + VALUE "InternalName", "zlib\0" + VALUE "OriginalFilename", "zlibwapi.dll\0" + VALUE "ProductName", "ZLib.DLL\0" + VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" + VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 1252 + END +END diff --git a/third_party/zlib-1.3/contrib/vstudio/vc9/zlibstat.vcproj b/third_party/zlib-1.3.1/contrib/vstudio/vc9/zlibstat.vcproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc9/zlibstat.vcproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc9/zlibstat.vcproj diff --git a/third_party/zlib-1.3.1/contrib/vstudio/vc9/zlibvc.def b/third_party/zlib-1.3.1/contrib/vstudio/vc9/zlibvc.def new file mode 100644 index 00000000..53947cc3 --- /dev/null +++ b/third_party/zlib-1.3.1/contrib/vstudio/vc9/zlibvc.def @@ -0,0 +1,158 @@ +LIBRARY +; zlib data compression and ZIP file I/O library + +VERSION 1.3.1 + +EXPORTS + adler32 @1 + compress @2 + crc32 @3 + deflate @4 + deflateCopy @5 + deflateEnd @6 + deflateInit2_ @7 + deflateInit_ @8 + deflateParams @9 + deflateReset @10 + deflateSetDictionary @11 + gzclose @12 + gzdopen @13 + gzerror @14 + gzflush @15 + gzopen @16 + gzread @17 + gzwrite @18 + inflate @19 + inflateEnd @20 + inflateInit2_ @21 + inflateInit_ @22 + inflateReset @23 + inflateSetDictionary @24 + inflateSync @25 + uncompress @26 + zlibVersion @27 + gzprintf @28 + gzputc @29 + gzgetc @30 + gzseek @31 + gzrewind @32 + gztell @33 + gzeof @34 + gzsetparams @35 + zError @36 + inflateSyncPoint @37 + get_crc_table @38 + compress2 @39 + gzputs @40 + gzgets @41 + inflateCopy @42 + inflateBackInit_ @43 + inflateBack @44 + inflateBackEnd @45 + compressBound @46 + deflateBound @47 + gzclearerr @48 + gzungetc @49 + zlibCompileFlags @50 + deflatePrime @51 + deflatePending @52 + + unzOpen @61 + unzClose @62 + unzGetGlobalInfo @63 + unzGetCurrentFileInfo @64 + unzGoToFirstFile @65 + unzGoToNextFile @66 + unzOpenCurrentFile @67 + unzReadCurrentFile @68 + unzOpenCurrentFile3 @69 + unztell @70 + unzeof @71 + unzCloseCurrentFile @72 + unzGetGlobalComment @73 + unzStringFileNameCompare @74 + unzLocateFile @75 + unzGetLocalExtrafield @76 + unzOpen2 @77 + unzOpenCurrentFile2 @78 + unzOpenCurrentFilePassword @79 + + zipOpen @80 + zipOpenNewFileInZip @81 + zipWriteInFileInZip @82 + zipCloseFileInZip @83 + zipClose @84 + zipOpenNewFileInZip2 @86 + zipCloseFileInZipRaw @87 + zipOpen2 @88 + zipOpenNewFileInZip3 @89 + + unzGetFilePos @100 + unzGoToFilePos @101 + + fill_win32_filefunc @110 + +; zlibwapi v1.2.4 added: + fill_win32_filefunc64 @111 + fill_win32_filefunc64A @112 + fill_win32_filefunc64W @113 + + unzOpen64 @120 + unzOpen2_64 @121 + unzGetGlobalInfo64 @122 + unzGetCurrentFileInfo64 @124 + unzGetCurrentFileZStreamPos64 @125 + unztell64 @126 + unzGetFilePos64 @127 + unzGoToFilePos64 @128 + + zipOpen64 @130 + zipOpen2_64 @131 + zipOpenNewFileInZip64 @132 + zipOpenNewFileInZip2_64 @133 + zipOpenNewFileInZip3_64 @134 + zipOpenNewFileInZip4_64 @135 + zipCloseFileInZipRaw64 @136 + +; zlib1 v1.2.4 added: + adler32_combine @140 + crc32_combine @142 + deflateSetHeader @144 + deflateTune @145 + gzbuffer @146 + gzclose_r @147 + gzclose_w @148 + gzdirect @149 + gzoffset @150 + inflateGetHeader @156 + inflateMark @157 + inflatePrime @158 + inflateReset2 @159 + inflateUndermine @160 + +; zlib1 v1.2.6 added: + gzgetc_ @161 + inflateResetKeep @163 + deflateResetKeep @164 + +; zlib1 v1.2.7 added: + gzopen_w @165 + +; zlib1 v1.2.8 added: + inflateGetDictionary @166 + gzvprintf @167 + +; zlib1 v1.2.9 added: + inflateCodesUsed @168 + inflateValidate @169 + uncompress2 @170 + gzfread @171 + gzfwrite @172 + deflateGetDictionary @173 + adler32_z @174 + crc32_z @175 + +; zlib1 v1.2.12 added: + crc32_combine_gen @176 + crc32_combine_gen64 @177 + crc32_combine_op @178 diff --git a/third_party/zlib-1.3/contrib/vstudio/vc9/zlibvc.sln b/third_party/zlib-1.3.1/contrib/vstudio/vc9/zlibvc.sln similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc9/zlibvc.sln rename to third_party/zlib-1.3.1/contrib/vstudio/vc9/zlibvc.sln diff --git a/third_party/zlib-1.3/contrib/vstudio/vc9/zlibvc.vcproj b/third_party/zlib-1.3.1/contrib/vstudio/vc9/zlibvc.vcproj similarity index 100% rename from third_party/zlib-1.3/contrib/vstudio/vc9/zlibvc.vcproj rename to third_party/zlib-1.3.1/contrib/vstudio/vc9/zlibvc.vcproj diff --git a/third_party/zlib-1.3/crc32.c b/third_party/zlib-1.3.1/crc32.c similarity index 100% rename from third_party/zlib-1.3/crc32.c rename to third_party/zlib-1.3.1/crc32.c diff --git a/third_party/zlib-1.3/crc32.h b/third_party/zlib-1.3.1/crc32.h similarity index 100% rename from third_party/zlib-1.3/crc32.h rename to third_party/zlib-1.3.1/crc32.h diff --git a/third_party/zlib-1.3/deflate.c b/third_party/zlib-1.3.1/deflate.c similarity index 98% rename from third_party/zlib-1.3/deflate.c rename to third_party/zlib-1.3.1/deflate.c index bd011751..012ea814 100644 --- a/third_party/zlib-1.3/deflate.c +++ b/third_party/zlib-1.3.1/deflate.c @@ -1,5 +1,5 @@ /* deflate.c -- compress data using the deflation algorithm - * Copyright (C) 1995-2023 Jean-loup Gailly and Mark Adler + * Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -52,7 +52,7 @@ #include "deflate.h" const char deflate_copyright[] = - " deflate 1.3 Copyright 1995-2023 Jean-loup Gailly and Mark Adler "; + " deflate 1.3.1 Copyright 1995-2024 Jean-loup Gailly and Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot @@ -493,7 +493,7 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, * symbols from which it is being constructed. */ - s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, 4); + s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, LIT_BUFS); s->pending_buf_size = (ulg)s->lit_bufsize * 4; if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL || @@ -503,8 +503,14 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, deflateEnd (strm); return Z_MEM_ERROR; } +#ifdef LIT_MEM + s->d_buf = (ushf *)(s->pending_buf + (s->lit_bufsize << 1)); + s->l_buf = s->pending_buf + (s->lit_bufsize << 2); + s->sym_end = s->lit_bufsize - 1; +#else s->sym_buf = s->pending_buf + s->lit_bufsize; s->sym_end = (s->lit_bufsize - 1) * 3; +#endif /* We avoid equality with lit_bufsize*3 because of wraparound at 64K * on 16 bit machines and because stored blocks are restricted to * 64K-1 bytes. @@ -720,9 +726,15 @@ int ZEXPORT deflatePrime(z_streamp strm, int bits, int value) { if (deflateStateCheck(strm)) return Z_STREAM_ERROR; s = strm->state; +#ifdef LIT_MEM + if (bits < 0 || bits > 16 || + (uchf *)s->d_buf < s->pending_out + ((Buf_size + 7) >> 3)) + return Z_BUF_ERROR; +#else if (bits < 0 || bits > 16 || s->sym_buf < s->pending_out + ((Buf_size + 7) >> 3)) return Z_BUF_ERROR; +#endif do { put = Buf_size - s->bi_valid; if (put > bits) @@ -1294,7 +1306,7 @@ int ZEXPORT deflateCopy(z_streamp dest, z_streamp source) { ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte)); ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos)); ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos)); - ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, 4); + ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, LIT_BUFS); if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL || ds->pending_buf == Z_NULL) { @@ -1305,10 +1317,15 @@ int ZEXPORT deflateCopy(z_streamp dest, z_streamp source) { zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte)); zmemcpy((voidpf)ds->prev, (voidpf)ss->prev, ds->w_size * sizeof(Pos)); zmemcpy((voidpf)ds->head, (voidpf)ss->head, ds->hash_size * sizeof(Pos)); - zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size); + zmemcpy(ds->pending_buf, ss->pending_buf, ds->lit_bufsize * LIT_BUFS); ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf); +#ifdef LIT_MEM + ds->d_buf = (ushf *)(ds->pending_buf + (ds->lit_bufsize << 1)); + ds->l_buf = ds->pending_buf + (ds->lit_bufsize << 2); +#else ds->sym_buf = ds->pending_buf + ds->lit_bufsize; +#endif ds->l_desc.dyn_tree = ds->dyn_ltree; ds->d_desc.dyn_tree = ds->dyn_dtree; @@ -1539,13 +1556,21 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { */ local void check_match(deflate_state *s, IPos start, IPos match, int length) { /* check that the match is indeed a match */ - if (zmemcmp(s->window + match, - s->window + start, length) != EQUAL) { - fprintf(stderr, " start %u, match %u, length %d\n", - start, match, length); + Bytef *back = s->window + (int)match, *here = s->window + start; + IPos len = length; + if (match == (IPos)-1) { + /* match starts one byte before the current window -- just compare the + subsequent length-1 bytes */ + back++; + here++; + len--; + } + if (zmemcmp(back, here, len) != EQUAL) { + fprintf(stderr, " start %u, match %d, length %d\n", + start, (int)match, length); do { - fprintf(stderr, "%c%c", s->window[match++], s->window[start++]); - } while (--length != 0); + fprintf(stderr, "(%02x %02x)", *back++, *here++); + } while (--len != 0); z_error("invalid match"); } if (z_verbose > 1) { diff --git a/third_party/zlib-1.3/deflate.h b/third_party/zlib-1.3.1/deflate.h similarity index 92% rename from third_party/zlib-1.3/deflate.h rename to third_party/zlib-1.3.1/deflate.h index 86967914..300c6ada 100644 --- a/third_party/zlib-1.3/deflate.h +++ b/third_party/zlib-1.3.1/deflate.h @@ -1,5 +1,5 @@ /* deflate.h -- internal compression state - * Copyright (C) 1995-2018 Jean-loup Gailly + * Copyright (C) 1995-2024 Jean-loup Gailly * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -23,6 +23,10 @@ # define GZIP #endif +/* define LIT_MEM to slightly increase the speed of deflate (order 1% to 2%) at + the cost of a larger memory footprint */ +/* #define LIT_MEM */ + /* =========================================================================== * Internal compression state. */ @@ -217,7 +221,14 @@ typedef struct internal_state { /* Depth of each subtree used as tie breaker for trees of equal frequency */ +#ifdef LIT_MEM +# define LIT_BUFS 5 + ushf *d_buf; /* buffer for distances */ + uchf *l_buf; /* buffer for literals/lengths */ +#else +# define LIT_BUFS 4 uchf *sym_buf; /* buffer for distances and literals/lengths */ +#endif uInt lit_bufsize; /* Size of match buffer for literals/lengths. There are 4 reasons for @@ -239,7 +250,7 @@ typedef struct internal_state { * - I can't count above 4 */ - uInt sym_next; /* running index in sym_buf */ + uInt sym_next; /* running index in symbol buffer */ uInt sym_end; /* symbol table full when sym_next reaches this */ ulg opt_len; /* bit length of current block with optimal trees */ @@ -318,6 +329,25 @@ void ZLIB_INTERNAL _tr_stored_block(deflate_state *s, charf *buf, extern const uch ZLIB_INTERNAL _dist_code[]; #endif +#ifdef LIT_MEM +# define _tr_tally_lit(s, c, flush) \ + { uch cc = (c); \ + s->d_buf[s->sym_next] = 0; \ + s->l_buf[s->sym_next++] = cc; \ + s->dyn_ltree[cc].Freq++; \ + flush = (s->sym_next == s->sym_end); \ + } +# define _tr_tally_dist(s, distance, length, flush) \ + { uch len = (uch)(length); \ + ush dist = (ush)(distance); \ + s->d_buf[s->sym_next] = dist; \ + s->l_buf[s->sym_next++] = len; \ + dist--; \ + s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \ + s->dyn_dtree[d_code(dist)].Freq++; \ + flush = (s->sym_next == s->sym_end); \ + } +#else # define _tr_tally_lit(s, c, flush) \ { uch cc = (c); \ s->sym_buf[s->sym_next++] = 0; \ @@ -337,6 +367,7 @@ void ZLIB_INTERNAL _tr_stored_block(deflate_state *s, charf *buf, s->dyn_dtree[d_code(dist)].Freq++; \ flush = (s->sym_next == s->sym_end); \ } +#endif #else # define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c) # define _tr_tally_dist(s, distance, length, flush) \ diff --git a/third_party/zlib-1.3/doc/algorithm.txt b/third_party/zlib-1.3.1/doc/algorithm.txt similarity index 99% rename from third_party/zlib-1.3/doc/algorithm.txt rename to third_party/zlib-1.3.1/doc/algorithm.txt index c97f4950..029e5a31 100644 --- a/third_party/zlib-1.3/doc/algorithm.txt +++ b/third_party/zlib-1.3.1/doc/algorithm.txt @@ -77,7 +77,7 @@ table took no time (and if you had infinite memory), then there would only be a first level table to cover all the way to the longest code. However, building the table ends up taking a lot longer for more bits since short codes are replicated many times in such a table. What inflate() does is -simply to make the number of bits in the first table a variable, and then +simply to make the number of bits in the first table a variable, and then to set that variable for the maximum speed. For inflate, which has 286 possible codes for the literal/length tree, the size diff --git a/third_party/zlib-1.3/doc/crc-doc.1.0.pdf b/third_party/zlib-1.3.1/doc/crc-doc.1.0.pdf similarity index 100% rename from third_party/zlib-1.3/doc/crc-doc.1.0.pdf rename to third_party/zlib-1.3.1/doc/crc-doc.1.0.pdf diff --git a/third_party/zlib-1.3/doc/rfc1950.txt b/third_party/zlib-1.3.1/doc/rfc1950.txt similarity index 100% rename from third_party/zlib-1.3/doc/rfc1950.txt rename to third_party/zlib-1.3.1/doc/rfc1950.txt diff --git a/third_party/zlib-1.3/doc/rfc1951.txt b/third_party/zlib-1.3.1/doc/rfc1951.txt similarity index 100% rename from third_party/zlib-1.3/doc/rfc1951.txt rename to third_party/zlib-1.3.1/doc/rfc1951.txt diff --git a/third_party/zlib-1.3/doc/rfc1952.txt b/third_party/zlib-1.3.1/doc/rfc1952.txt similarity index 100% rename from third_party/zlib-1.3/doc/rfc1952.txt rename to third_party/zlib-1.3.1/doc/rfc1952.txt diff --git a/third_party/zlib-1.3/doc/txtvsbin.txt b/third_party/zlib-1.3.1/doc/txtvsbin.txt similarity index 100% rename from third_party/zlib-1.3/doc/txtvsbin.txt rename to third_party/zlib-1.3.1/doc/txtvsbin.txt diff --git a/third_party/zlib-1.3/examples/README.examples b/third_party/zlib-1.3.1/examples/README.examples similarity index 100% rename from third_party/zlib-1.3/examples/README.examples rename to third_party/zlib-1.3.1/examples/README.examples diff --git a/third_party/zlib-1.3/examples/enough.c b/third_party/zlib-1.3.1/examples/enough.c similarity index 100% rename from third_party/zlib-1.3/examples/enough.c rename to third_party/zlib-1.3.1/examples/enough.c diff --git a/third_party/zlib-1.3/examples/fitblk.c b/third_party/zlib-1.3.1/examples/fitblk.c similarity index 100% rename from third_party/zlib-1.3/examples/fitblk.c rename to third_party/zlib-1.3.1/examples/fitblk.c diff --git a/third_party/zlib-1.3/examples/gun.c b/third_party/zlib-1.3.1/examples/gun.c similarity index 100% rename from third_party/zlib-1.3/examples/gun.c rename to third_party/zlib-1.3.1/examples/gun.c diff --git a/third_party/zlib-1.3/examples/gzappend.c b/third_party/zlib-1.3.1/examples/gzappend.c similarity index 100% rename from third_party/zlib-1.3/examples/gzappend.c rename to third_party/zlib-1.3.1/examples/gzappend.c diff --git a/third_party/zlib-1.3/examples/gzjoin.c b/third_party/zlib-1.3.1/examples/gzjoin.c similarity index 100% rename from third_party/zlib-1.3/examples/gzjoin.c rename to third_party/zlib-1.3.1/examples/gzjoin.c diff --git a/third_party/zlib-1.3/examples/gzlog.c b/third_party/zlib-1.3.1/examples/gzlog.c similarity index 99% rename from third_party/zlib-1.3/examples/gzlog.c rename to third_party/zlib-1.3.1/examples/gzlog.c index b977802d..da1b02e7 100644 --- a/third_party/zlib-1.3/examples/gzlog.c +++ b/third_party/zlib-1.3.1/examples/gzlog.c @@ -212,8 +212,8 @@ to the appropriate recovery below. If there is no foo.add file, provide a zero data length to the recovery. In that case, the append recovery restores the foo.gz to the previous compressed + uncompressed data state. - For the the compress recovery, a missing foo.add file results in foo.gz - being restored to the previous compressed-only data state. + For the compress recovery, a missing foo.add file results in foo.gz being + restored to the previous compressed-only data state. - Append recovery: - Pick up append at + step above - Compress recovery: diff --git a/third_party/zlib-1.3/examples/gzlog.h b/third_party/zlib-1.3.1/examples/gzlog.h similarity index 100% rename from third_party/zlib-1.3/examples/gzlog.h rename to third_party/zlib-1.3.1/examples/gzlog.h diff --git a/third_party/zlib-1.3/examples/gznorm.c b/third_party/zlib-1.3.1/examples/gznorm.c similarity index 100% rename from third_party/zlib-1.3/examples/gznorm.c rename to third_party/zlib-1.3.1/examples/gznorm.c diff --git a/third_party/zlib-1.3/examples/zlib_how.html b/third_party/zlib-1.3.1/examples/zlib_how.html similarity index 100% rename from third_party/zlib-1.3/examples/zlib_how.html rename to third_party/zlib-1.3.1/examples/zlib_how.html diff --git a/third_party/zlib-1.3/examples/zpipe.c b/third_party/zlib-1.3.1/examples/zpipe.c similarity index 100% rename from third_party/zlib-1.3/examples/zpipe.c rename to third_party/zlib-1.3.1/examples/zpipe.c diff --git a/third_party/zlib-1.3/examples/zran.c b/third_party/zlib-1.3.1/examples/zran.c similarity index 99% rename from third_party/zlib-1.3/examples/zran.c rename to third_party/zlib-1.3.1/examples/zran.c index 32c93686..d3135955 100644 --- a/third_party/zlib-1.3/examples/zran.c +++ b/third_party/zlib-1.3.1/examples/zran.c @@ -267,7 +267,7 @@ static inline void append_bits(unsigned value, int bits, } } -// Insert enough bits in the form of empty deflate blocks in front of the the +// Insert enough bits in the form of empty deflate blocks in front of the // low bits bits of value, in order to bring the sequence to a byte boundary. // Then feed that to inflate(). This does what inflatePrime() does, except that // a negative value of bits is not supported. bits must be in 0..16. If the diff --git a/third_party/zlib-1.3/examples/zran.h b/third_party/zlib-1.3.1/examples/zran.h similarity index 100% rename from third_party/zlib-1.3/examples/zran.h rename to third_party/zlib-1.3.1/examples/zran.h diff --git a/third_party/zlib-1.3/gzclose.c b/third_party/zlib-1.3.1/gzclose.c similarity index 100% rename from third_party/zlib-1.3/gzclose.c rename to third_party/zlib-1.3.1/gzclose.c diff --git a/third_party/zlib-1.3/gzguts.h b/third_party/zlib-1.3.1/gzguts.h similarity index 96% rename from third_party/zlib-1.3/gzguts.h rename to third_party/zlib-1.3.1/gzguts.h index f9375047..eba72085 100644 --- a/third_party/zlib-1.3/gzguts.h +++ b/third_party/zlib-1.3.1/gzguts.h @@ -1,5 +1,5 @@ /* gzguts.h -- zlib internal header definitions for gz* operations - * Copyright (C) 2004-2019 Mark Adler + * Copyright (C) 2004-2024 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -210,9 +210,5 @@ char ZLIB_INTERNAL *gz_strwinerror(DWORD error); /* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t value -- needed when comparing unsigned to z_off64_t, which is signed (possible z_off64_t types off_t, off64_t, and long are all signed) */ -#ifdef INT_MAX -# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX) -#else unsigned ZLIB_INTERNAL gz_intmax(void); -# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax()) -#endif +#define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax()) diff --git a/third_party/zlib-1.3/gzlib.c b/third_party/zlib-1.3.1/gzlib.c similarity index 99% rename from third_party/zlib-1.3/gzlib.c rename to third_party/zlib-1.3.1/gzlib.c index 29fc4486..983153cc 100644 --- a/third_party/zlib-1.3/gzlib.c +++ b/third_party/zlib-1.3.1/gzlib.c @@ -1,5 +1,5 @@ /* gzlib.c -- zlib functions common to reading and writing gzip files - * Copyright (C) 2004-2019 Mark Adler + * Copyright (C) 2004-2024 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -563,20 +563,20 @@ void ZLIB_INTERNAL gz_error(gz_statep state, int err, const char *msg) { #endif } -#ifndef INT_MAX /* portably return maximum value for an int (when limits.h presumed not available) -- we need to do this to cover cases where 2's complement not used, since C standard permits 1's complement and sign-bit representations, otherwise we could just use ((unsigned)-1) >> 1 */ unsigned ZLIB_INTERNAL gz_intmax(void) { - unsigned p, q; - - p = 1; +#ifdef INT_MAX + return INT_MAX; +#else + unsigned p = 1, q; do { q = p; p <<= 1; p++; } while (p > q); return q >> 1; -} #endif +} diff --git a/third_party/zlib-1.3/gzread.c b/third_party/zlib-1.3.1/gzread.c similarity index 100% rename from third_party/zlib-1.3/gzread.c rename to third_party/zlib-1.3.1/gzread.c diff --git a/third_party/zlib-1.3/gzwrite.c b/third_party/zlib-1.3.1/gzwrite.c similarity index 100% rename from third_party/zlib-1.3/gzwrite.c rename to third_party/zlib-1.3.1/gzwrite.c diff --git a/third_party/zlib-1.3/infback.c b/third_party/zlib-1.3.1/infback.c similarity index 100% rename from third_party/zlib-1.3/infback.c rename to third_party/zlib-1.3.1/infback.c diff --git a/third_party/zlib-1.3/inffast.c b/third_party/zlib-1.3.1/inffast.c similarity index 100% rename from third_party/zlib-1.3/inffast.c rename to third_party/zlib-1.3.1/inffast.c diff --git a/third_party/zlib-1.3/inffast.h b/third_party/zlib-1.3.1/inffast.h similarity index 100% rename from third_party/zlib-1.3/inffast.h rename to third_party/zlib-1.3.1/inffast.h diff --git a/third_party/zlib-1.3/inffixed.h b/third_party/zlib-1.3.1/inffixed.h similarity index 100% rename from third_party/zlib-1.3/inffixed.h rename to third_party/zlib-1.3.1/inffixed.h diff --git a/third_party/zlib-1.3/inflate.c b/third_party/zlib-1.3.1/inflate.c similarity index 99% rename from third_party/zlib-1.3/inflate.c rename to third_party/zlib-1.3.1/inflate.c index b0757a9b..94ecff01 100644 --- a/third_party/zlib-1.3/inflate.c +++ b/third_party/zlib-1.3.1/inflate.c @@ -1387,7 +1387,7 @@ int ZEXPORT inflateSync(z_streamp strm) { /* if first time, start search in bit buffer */ if (state->mode != SYNC) { state->mode = SYNC; - state->hold <<= state->bits & 7; + state->hold >>= state->bits & 7; state->bits -= state->bits & 7; len = 0; while (state->bits >= 8) { diff --git a/third_party/zlib-1.3/inflate.h b/third_party/zlib-1.3.1/inflate.h similarity index 100% rename from third_party/zlib-1.3/inflate.h rename to third_party/zlib-1.3.1/inflate.h diff --git a/third_party/zlib-1.3/inftrees.c b/third_party/zlib-1.3.1/inftrees.c similarity index 98% rename from third_party/zlib-1.3/inftrees.c rename to third_party/zlib-1.3.1/inftrees.c index 8a208c2d..98cfe164 100644 --- a/third_party/zlib-1.3/inftrees.c +++ b/third_party/zlib-1.3.1/inftrees.c @@ -1,5 +1,5 @@ /* inftrees.c -- generate Huffman trees for efficient decoding - * Copyright (C) 1995-2023 Mark Adler + * Copyright (C) 1995-2024 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -9,7 +9,7 @@ #define MAXBITS 15 const char inflate_copyright[] = - " inflate 1.3 Copyright 1995-2023 Mark Adler "; + " inflate 1.3.1 Copyright 1995-2024 Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot @@ -57,7 +57,7 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; static const unsigned short lext[31] = { /* Length codes 257..285 extra */ 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, - 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 198, 203}; + 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 203, 77}; static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, diff --git a/third_party/zlib-1.3/inftrees.h b/third_party/zlib-1.3.1/inftrees.h similarity index 94% rename from third_party/zlib-1.3/inftrees.h rename to third_party/zlib-1.3.1/inftrees.h index a10712d8..396f74b5 100644 --- a/third_party/zlib-1.3/inftrees.h +++ b/third_party/zlib-1.3.1/inftrees.h @@ -41,8 +41,8 @@ typedef struct { examples/enough.c found in the zlib distribution. The arguments to that program are the number of symbols, the initial root table size, and the maximum bit length of a code. "enough 286 9 15" for literal/length codes - returns returns 852, and "enough 30 6 15" for distance codes returns 592. - The initial root table size (9 or 6) is found in the fifth argument of the + returns 852, and "enough 30 6 15" for distance codes returns 592. The + initial root table size (9 or 6) is found in the fifth argument of the inflate_table() calls in inflate.c and infback.c. If the root table size is changed, then these maximum sizes would be need to be recalculated and updated. */ diff --git a/third_party/zlib-1.3/make_vms.com b/third_party/zlib-1.3.1/make_vms.com similarity index 100% rename from third_party/zlib-1.3/make_vms.com rename to third_party/zlib-1.3.1/make_vms.com diff --git a/third_party/zlib-1.3/msdos/Makefile.bor b/third_party/zlib-1.3.1/msdos/Makefile.bor similarity index 100% rename from third_party/zlib-1.3/msdos/Makefile.bor rename to third_party/zlib-1.3.1/msdos/Makefile.bor diff --git a/third_party/zlib-1.3/msdos/Makefile.dj2 b/third_party/zlib-1.3.1/msdos/Makefile.dj2 similarity index 100% rename from third_party/zlib-1.3/msdos/Makefile.dj2 rename to third_party/zlib-1.3.1/msdos/Makefile.dj2 diff --git a/third_party/zlib-1.3/msdos/Makefile.emx b/third_party/zlib-1.3.1/msdos/Makefile.emx similarity index 100% rename from third_party/zlib-1.3/msdos/Makefile.emx rename to third_party/zlib-1.3.1/msdos/Makefile.emx diff --git a/third_party/zlib-1.3/msdos/Makefile.msc b/third_party/zlib-1.3.1/msdos/Makefile.msc similarity index 100% rename from third_party/zlib-1.3/msdos/Makefile.msc rename to third_party/zlib-1.3.1/msdos/Makefile.msc diff --git a/third_party/zlib-1.3/msdos/Makefile.tc b/third_party/zlib-1.3.1/msdos/Makefile.tc similarity index 100% rename from third_party/zlib-1.3/msdos/Makefile.tc rename to third_party/zlib-1.3.1/msdos/Makefile.tc diff --git a/third_party/zlib-1.3/nintendods/Makefile b/third_party/zlib-1.3.1/nintendods/Makefile similarity index 100% rename from third_party/zlib-1.3/nintendods/Makefile rename to third_party/zlib-1.3.1/nintendods/Makefile diff --git a/third_party/zlib-1.3/nintendods/README b/third_party/zlib-1.3.1/nintendods/README similarity index 100% rename from third_party/zlib-1.3/nintendods/README rename to third_party/zlib-1.3.1/nintendods/README diff --git a/third_party/zlib-1.3/old/Makefile.emx b/third_party/zlib-1.3.1/old/Makefile.emx similarity index 100% rename from third_party/zlib-1.3/old/Makefile.emx rename to third_party/zlib-1.3.1/old/Makefile.emx diff --git a/third_party/zlib-1.3/old/Makefile.riscos b/third_party/zlib-1.3.1/old/Makefile.riscos similarity index 100% rename from third_party/zlib-1.3/old/Makefile.riscos rename to third_party/zlib-1.3.1/old/Makefile.riscos diff --git a/third_party/zlib-1.3/old/README b/third_party/zlib-1.3.1/old/README similarity index 100% rename from third_party/zlib-1.3/old/README rename to third_party/zlib-1.3.1/old/README diff --git a/third_party/zlib-1.3/old/descrip.mms b/third_party/zlib-1.3.1/old/descrip.mms similarity index 100% rename from third_party/zlib-1.3/old/descrip.mms rename to third_party/zlib-1.3.1/old/descrip.mms diff --git a/third_party/zlib-1.3/old/os2/Makefile.os2 b/third_party/zlib-1.3.1/old/os2/Makefile.os2 similarity index 100% rename from third_party/zlib-1.3/old/os2/Makefile.os2 rename to third_party/zlib-1.3.1/old/os2/Makefile.os2 diff --git a/third_party/zlib-1.3/old/os2/zlib.def b/third_party/zlib-1.3.1/old/os2/zlib.def similarity index 100% rename from third_party/zlib-1.3/old/os2/zlib.def rename to third_party/zlib-1.3.1/old/os2/zlib.def diff --git a/third_party/zlib-1.3/old/visual-basic.txt b/third_party/zlib-1.3.1/old/visual-basic.txt similarity index 98% rename from third_party/zlib-1.3/old/visual-basic.txt rename to third_party/zlib-1.3.1/old/visual-basic.txt index 57efe581..3c8d2a42 100644 --- a/third_party/zlib-1.3/old/visual-basic.txt +++ b/third_party/zlib-1.3.1/old/visual-basic.txt @@ -115,7 +115,7 @@ SUCCESS Then ReDim Preserve bytaryCpr(lngCprSiz - 1) Open strCprPth For Binary Access Write As #1 Put #1, , bytaryCpr() - Put #1, , lngOriSiz 'Add the the original size value to the end + Put #1, , lngOriSiz 'Add the original size value to the end (last 4 bytes) Close #1 Else diff --git a/third_party/zlib-1.3/os400/README400 b/third_party/zlib-1.3.1/os400/README400 similarity index 96% rename from third_party/zlib-1.3/os400/README400 rename to third_party/zlib-1.3.1/os400/README400 index 6dd41aa6..30ed5a12 100644 --- a/third_party/zlib-1.3/os400/README400 +++ b/third_party/zlib-1.3.1/os400/README400 @@ -1,4 +1,4 @@ - ZLIB version 1.3.0 for OS/400 installation instructions + ZLIB version 1.3.1 for OS/400 installation instructions 1) Download and unpack the zlib tarball to some IFS directory. (i.e.: /path/to/the/zlib/ifs/source/directory) diff --git a/third_party/zlib-1.3/os400/bndsrc b/third_party/zlib-1.3.1/os400/bndsrc similarity index 100% rename from third_party/zlib-1.3/os400/bndsrc rename to third_party/zlib-1.3.1/os400/bndsrc diff --git a/third_party/zlib-1.3/os400/make.sh b/third_party/zlib-1.3.1/os400/make.sh similarity index 100% rename from third_party/zlib-1.3/os400/make.sh rename to third_party/zlib-1.3.1/os400/make.sh diff --git a/third_party/zlib-1.3/os400/zlib.inc b/third_party/zlib-1.3.1/os400/zlib.inc similarity index 99% rename from third_party/zlib-1.3/os400/zlib.inc rename to third_party/zlib-1.3.1/os400/zlib.inc index 0d9e2f20..744729ab 100644 --- a/third_party/zlib-1.3/os400/zlib.inc +++ b/third_party/zlib-1.3.1/os400/zlib.inc @@ -1,7 +1,7 @@ * ZLIB.INC - Interface to the general purpose compression library * * ILE RPG400 version by Patrick Monnerat, DATASPHERE. - * Version 1.3.0 + * Version 1.3.1 * * * WARNING: @@ -22,12 +22,12 @@ * * Versioning information. * - D ZLIB_VERSION C '1.3.0' + D ZLIB_VERSION C '1.3.1' D ZLIB_VERNUM C X'12a0' D ZLIB_VER_MAJOR C 1 D ZLIB_VER_MINOR C 3 D ZLIB_VER_REVISION... - D C 0 + D C 1 D ZLIB_VER_SUBREVISION... D C 0 * diff --git a/third_party/zlib-1.3/qnx/package.qpg b/third_party/zlib-1.3.1/qnx/package.qpg similarity index 95% rename from third_party/zlib-1.3/qnx/package.qpg rename to third_party/zlib-1.3.1/qnx/package.qpg index d882af2b..4877e0ef 100644 --- a/third_party/zlib-1.3/qnx/package.qpg +++ b/third_party/zlib-1.3.1/qnx/package.qpg @@ -25,10 +25,10 @@ - - - - + + + + @@ -63,7 +63,7 @@ - 1.3.0 + 1.3.1 Medium Stable diff --git a/third_party/zlib-1.3/test/example.c b/third_party/zlib-1.3.1/test/example.c similarity index 94% rename from third_party/zlib-1.3/test/example.c rename to third_party/zlib-1.3.1/test/example.c index 582a17a3..c3521dd5 100644 --- a/third_party/zlib-1.3/test/example.c +++ b/third_party/zlib-1.3.1/test/example.c @@ -36,12 +36,12 @@ static uLong dictId; /* Adler32 value of the dictionary */ #ifdef Z_SOLO -void *myalloc(void *q, unsigned n, unsigned m) { +static void *myalloc(void *q, unsigned n, unsigned m) { (void)q; return calloc(n, m); } -void myfree(void *q, void *p) { +static void myfree(void *q, void *p) { (void)q; free(p); } @@ -57,7 +57,7 @@ static free_func zfree = (free_func)0; /* =========================================================================== * Test compress() and uncompress() */ -void test_compress(Byte *compr, uLong comprLen, Byte *uncompr, +static void test_compress(Byte *compr, uLong comprLen, Byte *uncompr, uLong uncomprLen) { int err; uLong len = (uLong)strlen(hello)+1; @@ -81,7 +81,7 @@ void test_compress(Byte *compr, uLong comprLen, Byte *uncompr, /* =========================================================================== * Test read/write of .gz files */ -void test_gzio(const char *fname, Byte *uncompr, uLong uncomprLen) { +static void test_gzio(const char *fname, Byte *uncompr, uLong uncomprLen) { #ifdef NO_GZCOMPRESS fprintf(stderr, "NO_GZCOMPRESS -- gz* functions cannot compress\n"); #else @@ -163,7 +163,7 @@ void test_gzio(const char *fname, Byte *uncompr, uLong uncomprLen) { /* =========================================================================== * Test deflate() with small buffers */ -void test_deflate(Byte *compr, uLong comprLen) { +static void test_deflate(Byte *compr, uLong comprLen) { z_stream c_stream; /* compression stream */ int err; uLong len = (uLong)strlen(hello)+1; @@ -198,7 +198,7 @@ void test_deflate(Byte *compr, uLong comprLen) { /* =========================================================================== * Test inflate() with small buffers */ -void test_inflate(Byte *compr, uLong comprLen, Byte *uncompr, +static void test_inflate(Byte *compr, uLong comprLen, Byte *uncompr, uLong uncomprLen) { int err; z_stream d_stream; /* decompression stream */ @@ -237,7 +237,7 @@ void test_inflate(Byte *compr, uLong comprLen, Byte *uncompr, /* =========================================================================== * Test deflate() with large buffers and dynamic change of compression level */ -void test_large_deflate(Byte *compr, uLong comprLen, Byte *uncompr, +static void test_large_deflate(Byte *compr, uLong comprLen, Byte *uncompr, uLong uncomprLen) { z_stream c_stream; /* compression stream */ int err; @@ -290,7 +290,7 @@ void test_large_deflate(Byte *compr, uLong comprLen, Byte *uncompr, /* =========================================================================== * Test inflate() with large buffers */ -void test_large_inflate(Byte *compr, uLong comprLen, Byte *uncompr, +static void test_large_inflate(Byte *compr, uLong comprLen, Byte *uncompr, uLong uncomprLen) { int err; z_stream d_stream; /* decompression stream */ @@ -329,7 +329,7 @@ void test_large_inflate(Byte *compr, uLong comprLen, Byte *uncompr, /* =========================================================================== * Test deflate() with full flush */ -void test_flush(Byte *compr, uLong *comprLen) { +static void test_flush(Byte *compr, uLong *comprLen) { z_stream c_stream; /* compression stream */ int err; uInt len = (uInt)strlen(hello)+1; @@ -364,7 +364,8 @@ void test_flush(Byte *compr, uLong *comprLen) { /* =========================================================================== * Test inflateSync() */ -void test_sync(Byte *compr, uLong comprLen, Byte *uncompr, uLong uncomprLen) { +static void test_sync(Byte *compr, uLong comprLen, Byte *uncompr, + uLong uncomprLen) { int err; z_stream d_stream; /* decompression stream */ @@ -404,7 +405,7 @@ void test_sync(Byte *compr, uLong comprLen, Byte *uncompr, uLong uncomprLen) { /* =========================================================================== * Test deflate() with preset dictionary */ -void test_dict_deflate(Byte *compr, uLong comprLen) { +static void test_dict_deflate(Byte *compr, uLong comprLen) { z_stream c_stream; /* compression stream */ int err; @@ -438,7 +439,7 @@ void test_dict_deflate(Byte *compr, uLong comprLen) { /* =========================================================================== * Test inflate() with a preset dictionary */ -void test_dict_inflate(Byte *compr, uLong comprLen, Byte *uncompr, +static void test_dict_inflate(Byte *compr, uLong comprLen, Byte *uncompr, uLong uncomprLen) { int err; z_stream d_stream; /* decompression stream */ diff --git a/third_party/zlib-1.3/test/infcover.c b/third_party/zlib-1.3.1/test/infcover.c similarity index 100% rename from third_party/zlib-1.3/test/infcover.c rename to third_party/zlib-1.3.1/test/infcover.c diff --git a/third_party/zlib-1.3/test/minigzip.c b/third_party/zlib-1.3.1/test/minigzip.c similarity index 94% rename from third_party/zlib-1.3/test/minigzip.c rename to third_party/zlib-1.3.1/test/minigzip.c index 8a21ddfb..134e10e6 100644 --- a/third_party/zlib-1.3/test/minigzip.c +++ b/third_party/zlib-1.3.1/test/minigzip.c @@ -149,12 +149,12 @@ static void pwinerror (s) # include /* for unlink() */ #endif -void *myalloc(void *q, unsigned n, unsigned m) { +static void *myalloc(void *q, unsigned n, unsigned m) { (void)q; return calloc(n, m); } -void myfree(void *q, void *p) { +static void myfree(void *q, void *p) { (void)q; free(p); } @@ -167,7 +167,7 @@ typedef struct gzFile_s { z_stream strm; } *gzFile; -gzFile gz_open(const char *path, int fd, const char *mode) { +static gzFile gz_open(const char *path, int fd, const char *mode) { gzFile gz; int ret; @@ -201,15 +201,15 @@ gzFile gz_open(const char *path, int fd, const char *mode) { return gz; } -gzFile gzopen(const char *path, const char *mode) { +static gzFile gzopen(const char *path, const char *mode) { return gz_open(path, -1, mode); } -gzFile gzdopen(int fd, const char *mode) { +static gzFile gzdopen(int fd, const char *mode) { return gz_open(NULL, fd, mode); } -int gzwrite(gzFile gz, const void *buf, unsigned len) { +static int gzwrite(gzFile gz, const void *buf, unsigned len) { z_stream *strm; unsigned char out[BUFLEN]; @@ -227,7 +227,7 @@ int gzwrite(gzFile gz, const void *buf, unsigned len) { return len; } -int gzread(gzFile gz, void *buf, unsigned len) { +static int gzread(gzFile gz, void *buf, unsigned len) { int ret; unsigned got; unsigned char in[1]; @@ -258,7 +258,7 @@ int gzread(gzFile gz, void *buf, unsigned len) { return len - strm->avail_out; } -int gzclose(gzFile gz) { +static int gzclose(gzFile gz) { z_stream *strm; unsigned char out[BUFLEN]; @@ -283,7 +283,7 @@ int gzclose(gzFile gz) { return Z_OK; } -const char *gzerror(gzFile gz, int *err) { +static const char *gzerror(gzFile gz, int *err) { *err = gz->err; return gz->msg; } @@ -295,7 +295,7 @@ static char *prog; /* =========================================================================== * Display error message and exit */ -void error(const char *msg) { +static void error(const char *msg) { fprintf(stderr, "%s: %s\n", prog, msg); exit(1); } @@ -303,9 +303,9 @@ void error(const char *msg) { #ifdef USE_MMAP /* MMAP version, Miguel Albrecht */ /* Try compressing the input file at once using mmap. Return Z_OK if - * if success, Z_ERRNO otherwise. + * success, Z_ERRNO otherwise. */ -int gz_compress_mmap(FILE *in, gzFile out) { +static int gz_compress_mmap(FILE *in, gzFile out) { int len; int err; int ifd = fileno(in); @@ -338,7 +338,7 @@ int gz_compress_mmap(FILE *in, gzFile out) { * Compress input to output then close both files. */ -void gz_compress(FILE *in, gzFile out) { +static void gz_compress(FILE *in, gzFile out) { local char buf[BUFLEN]; int len; int err; @@ -366,7 +366,7 @@ void gz_compress(FILE *in, gzFile out) { /* =========================================================================== * Uncompress input to output then close both files. */ -void gz_uncompress(gzFile in, FILE *out) { +static void gz_uncompress(gzFile in, FILE *out) { local char buf[BUFLEN]; int len; int err; @@ -390,7 +390,7 @@ void gz_uncompress(gzFile in, FILE *out) { * Compress the given file: create a corresponding .gz file and remove the * original. */ -void file_compress(char *file, char *mode) { +static void file_compress(char *file, char *mode) { local char outfile[MAX_NAME_LEN]; FILE *in; gzFile out; @@ -426,7 +426,7 @@ void file_compress(char *file, char *mode) { /* =========================================================================== * Uncompress the given file and remove the original. */ -void file_uncompress(char *file) { +static void file_uncompress(char *file) { local char buf[MAX_NAME_LEN]; char *infile, *outfile; FILE *out; diff --git a/third_party/zlib-1.3/treebuild.xml b/third_party/zlib-1.3.1/treebuild.xml similarity index 97% rename from third_party/zlib-1.3/treebuild.xml rename to third_party/zlib-1.3.1/treebuild.xml index 1d1b0077..930b00be 100644 --- a/third_party/zlib-1.3/treebuild.xml +++ b/third_party/zlib-1.3.1/treebuild.xml @@ -1,6 +1,6 @@ - - + + zip compression library diff --git a/third_party/zlib-1.3/trees.c b/third_party/zlib-1.3.1/trees.c similarity index 98% rename from third_party/zlib-1.3/trees.c rename to third_party/zlib-1.3.1/trees.c index 8dbdc40b..6a523ef3 100644 --- a/third_party/zlib-1.3/trees.c +++ b/third_party/zlib-1.3.1/trees.c @@ -1,5 +1,5 @@ /* trees.c -- output deflated data using Huffman coding - * Copyright (C) 1995-2021 Jean-loup Gailly + * Copyright (C) 1995-2024 Jean-loup Gailly * detect_data_type() function provided freely by Cosmin Truta, 2006 * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -899,14 +899,19 @@ local void compress_block(deflate_state *s, const ct_data *ltree, const ct_data *dtree) { unsigned dist; /* distance of matched string */ int lc; /* match length or unmatched char (if dist == 0) */ - unsigned sx = 0; /* running index in sym_buf */ + unsigned sx = 0; /* running index in symbol buffers */ unsigned code; /* the code to send */ int extra; /* number of extra bits to send */ if (s->sym_next != 0) do { +#ifdef LIT_MEM + dist = s->d_buf[sx]; + lc = s->l_buf[sx++]; +#else dist = s->sym_buf[sx++] & 0xff; dist += (unsigned)(s->sym_buf[sx++] & 0xff) << 8; lc = s->sym_buf[sx++]; +#endif if (dist == 0) { send_code(s, lc, ltree); /* send a literal byte */ Tracecv(isgraph(lc), (stderr," '%c' ", lc)); @@ -931,8 +936,12 @@ local void compress_block(deflate_state *s, const ct_data *ltree, } } /* literal or match pair ? */ - /* Check that the overlay between pending_buf and sym_buf is ok: */ + /* Check for no overlay of pending_buf on needed symbols */ +#ifdef LIT_MEM + Assert(s->pending < 2 * (s->lit_bufsize + sx), "pendingBuf overflow"); +#else Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow"); +#endif } while (sx < s->sym_next); @@ -1082,9 +1091,14 @@ void ZLIB_INTERNAL _tr_flush_block(deflate_state *s, charf *buf, * the current block must be flushed. */ int ZLIB_INTERNAL _tr_tally(deflate_state *s, unsigned dist, unsigned lc) { +#ifdef LIT_MEM + s->d_buf[s->sym_next] = (ush)dist; + s->l_buf[s->sym_next++] = (uch)lc; +#else s->sym_buf[s->sym_next++] = (uch)dist; s->sym_buf[s->sym_next++] = (uch)(dist >> 8); s->sym_buf[s->sym_next++] = (uch)lc; +#endif if (dist == 0) { /* lc is the unmatched char */ s->dyn_ltree[lc].Freq++; diff --git a/third_party/zlib-1.3/trees.h b/third_party/zlib-1.3.1/trees.h similarity index 100% rename from third_party/zlib-1.3/trees.h rename to third_party/zlib-1.3.1/trees.h diff --git a/third_party/zlib-1.3/uncompr.c b/third_party/zlib-1.3.1/uncompr.c similarity index 100% rename from third_party/zlib-1.3/uncompr.c rename to third_party/zlib-1.3.1/uncompr.c diff --git a/third_party/zlib-1.3/watcom/watcom_f.mak b/third_party/zlib-1.3.1/watcom/watcom_f.mak similarity index 100% rename from third_party/zlib-1.3/watcom/watcom_f.mak rename to third_party/zlib-1.3.1/watcom/watcom_f.mak diff --git a/third_party/zlib-1.3/watcom/watcom_l.mak b/third_party/zlib-1.3.1/watcom/watcom_l.mak similarity index 100% rename from third_party/zlib-1.3/watcom/watcom_l.mak rename to third_party/zlib-1.3.1/watcom/watcom_l.mak diff --git a/third_party/zlib-1.3/win32/DLL_FAQ.txt b/third_party/zlib-1.3.1/win32/DLL_FAQ.txt similarity index 95% rename from third_party/zlib-1.3/win32/DLL_FAQ.txt rename to third_party/zlib-1.3.1/win32/DLL_FAQ.txt index 12c00901..d8cf5f31 100644 --- a/third_party/zlib-1.3/win32/DLL_FAQ.txt +++ b/third_party/zlib-1.3.1/win32/DLL_FAQ.txt @@ -3,7 +3,7 @@ This document describes the design, the rationale, and the usage -of the official DLL build of zlib, named ZLIB1.DLL. If you have +of the common DLL build of zlib, named ZLIB1.DLL. If you have general questions about zlib, you should see the file "FAQ" found in the zlib distribution, or at the following location: http://www.gzip.org/zlib/zlib_faq.html @@ -11,13 +11,9 @@ in the zlib distribution, or at the following location: 1. What is ZLIB1.DLL, and how can I get it? - - ZLIB1.DLL is the official build of zlib as a DLL. + - ZLIB1.DLL is the common build of zlib as a DLL. (Please remark the character '1' in the name.) - Pointers to a precompiled ZLIB1.DLL can be found in the zlib - web site at: - http://www.zlib.net/ - Applications that link to ZLIB1.DLL can rely on the following specification: @@ -379,18 +375,6 @@ in the zlib distribution, or at the following location: code. But you can make your own private DLL build, under a different file name, as suggested in the previous answer. - -17. I made my own ZLIB1.DLL build. Can I test it for compliance? - - - We prefer that you download the official DLL from the zlib - web site. If you need something peculiar from this DLL, you - can send your suggestion to the zlib mailing list. - - However, in case you do rebuild the DLL yourself, you can run - it with the test programs found in the DLL distribution. - Running these test programs is not a guarantee of compliance, - but a failure can imply a detected problem. - ** This document is written and maintained by diff --git a/third_party/zlib-1.3/win32/Makefile.bor b/third_party/zlib-1.3.1/win32/Makefile.bor similarity index 100% rename from third_party/zlib-1.3/win32/Makefile.bor rename to third_party/zlib-1.3.1/win32/Makefile.bor diff --git a/third_party/zlib-1.3/win32/Makefile.gcc b/third_party/zlib-1.3.1/win32/Makefile.gcc similarity index 100% rename from third_party/zlib-1.3/win32/Makefile.gcc rename to third_party/zlib-1.3.1/win32/Makefile.gcc diff --git a/third_party/zlib-1.3/win32/Makefile.msc b/third_party/zlib-1.3.1/win32/Makefile.msc similarity index 100% rename from third_party/zlib-1.3/win32/Makefile.msc rename to third_party/zlib-1.3.1/win32/Makefile.msc diff --git a/third_party/zlib-1.3/win32/README-WIN32.txt b/third_party/zlib-1.3.1/win32/README-WIN32.txt similarity index 95% rename from third_party/zlib-1.3/win32/README-WIN32.txt rename to third_party/zlib-1.3.1/win32/README-WIN32.txt index 384c988f..14e6398e 100644 --- a/third_party/zlib-1.3/win32/README-WIN32.txt +++ b/third_party/zlib-1.3.1/win32/README-WIN32.txt @@ -1,6 +1,6 @@ ZLIB DATA COMPRESSION LIBRARY -zlib 1.3.0 is a general purpose data compression library. All the code is +zlib 1.3.1 is a general purpose data compression library. All the code is thread safe. The data format used by the zlib library is described by RFCs (Request for Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format) @@ -16,13 +16,13 @@ is http://zlib.net/ . Before reporting a problem, please check this site to verify that you have the latest version of zlib; otherwise get the latest version and check whether the problem still exists or not. -PLEASE read DLL_FAQ.txt, and the the zlib FAQ http://zlib.net/zlib_faq.html -before asking for help. +PLEASE read DLL_FAQ.txt, and the zlib FAQ http://zlib.net/zlib_faq.html before +asking for help. Manifest: -The package zlib-1.3.0-win32-x86.zip will contain the following files: +The package zlib-1.3.1-win32-x86.zip will contain the following files: README-WIN32.txt This document ChangeLog Changes since previous zlib packages diff --git a/third_party/zlib-1.3/win32/VisualC.txt b/third_party/zlib-1.3.1/win32/VisualC.txt similarity index 100% rename from third_party/zlib-1.3/win32/VisualC.txt rename to third_party/zlib-1.3.1/win32/VisualC.txt diff --git a/third_party/zlib-1.3/win32/zlib.def b/third_party/zlib-1.3.1/win32/zlib.def similarity index 100% rename from third_party/zlib-1.3/win32/zlib.def rename to third_party/zlib-1.3.1/win32/zlib.def diff --git a/third_party/zlib-1.3/win32/zlib1.rc b/third_party/zlib-1.3.1/win32/zlib1.rc similarity index 100% rename from third_party/zlib-1.3/win32/zlib1.rc rename to third_party/zlib-1.3.1/win32/zlib1.rc diff --git a/third_party/zlib-1.3/zconf.h b/third_party/zlib-1.3.1/zconf.h similarity index 98% rename from third_party/zlib-1.3/zconf.h rename to third_party/zlib-1.3.1/zconf.h index fb76ffe3..62adc8d8 100644 --- a/third_party/zlib-1.3/zconf.h +++ b/third_party/zlib-1.3.1/zconf.h @@ -1,5 +1,5 @@ /* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -300,14 +300,6 @@ # endif #endif -#ifndef Z_ARG /* function prototypes for stdarg */ -# if defined(STDC) || defined(Z_HAVE_STDARG_H) -# define Z_ARG(args) args -# else -# define Z_ARG(args) () -# endif -#endif - /* The following definitions for FAR are needed only for MSDOS mixed * model programming (small or medium model with some far allocations). * This was tested only with MSC; for other MSDOS compilers you may have diff --git a/third_party/zlib-1.3/zconf.h.cmakein b/third_party/zlib-1.3.1/zconf.h.cmakein similarity index 98% rename from third_party/zlib-1.3/zconf.h.cmakein rename to third_party/zlib-1.3.1/zconf.h.cmakein index 310c4392..0abe3bc9 100644 --- a/third_party/zlib-1.3/zconf.h.cmakein +++ b/third_party/zlib-1.3.1/zconf.h.cmakein @@ -1,5 +1,5 @@ /* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -302,14 +302,6 @@ # endif #endif -#ifndef Z_ARG /* function prototypes for stdarg */ -# if defined(STDC) || defined(Z_HAVE_STDARG_H) -# define Z_ARG(args) args -# else -# define Z_ARG(args) () -# endif -#endif - /* The following definitions for FAR are needed only for MSDOS mixed * model programming (small or medium model with some far allocations). * This was tested only with MSC; for other MSDOS compilers you may have diff --git a/third_party/zlib-1.3/zconf.h.in b/third_party/zlib-1.3.1/zconf.h.in similarity index 98% rename from third_party/zlib-1.3/zconf.h.in rename to third_party/zlib-1.3.1/zconf.h.in index fb76ffe3..62adc8d8 100644 --- a/third_party/zlib-1.3/zconf.h.in +++ b/third_party/zlib-1.3.1/zconf.h.in @@ -1,5 +1,5 @@ /* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -300,14 +300,6 @@ # endif #endif -#ifndef Z_ARG /* function prototypes for stdarg */ -# if defined(STDC) || defined(Z_HAVE_STDARG_H) -# define Z_ARG(args) args -# else -# define Z_ARG(args) () -# endif -#endif - /* The following definitions for FAR are needed only for MSDOS mixed * model programming (small or medium model with some far allocations). * This was tested only with MSC; for other MSDOS compilers you may have diff --git a/third_party/zlib-1.3/zlib.3 b/third_party/zlib-1.3.1/zlib.3 similarity index 97% rename from third_party/zlib-1.3/zlib.3 rename to third_party/zlib-1.3.1/zlib.3 index 4dd28967..c716020e 100644 --- a/third_party/zlib-1.3/zlib.3 +++ b/third_party/zlib-1.3.1/zlib.3 @@ -1,4 +1,4 @@ -.TH ZLIB 3 "18 Aug 2023" +.TH ZLIB 3 "22 Jan 2024" .SH NAME zlib \- compression/decompression library .SH SYNOPSIS @@ -105,9 +105,9 @@ before asking for help. Send questions and/or comments to zlib@gzip.org, or (for the Windows DLL version) to Gilles Vollant (info@winimage.com). .SH AUTHORS AND LICENSE -Version 1.3 +Version 1.3.1 .LP -Copyright (C) 1995-2023 Jean-loup Gailly and Mark Adler +Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler .LP This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/third_party/zlib-1.3.1/zlib.3.pdf b/third_party/zlib-1.3.1/zlib.3.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b224532bdd8eed1939b7dd04a7a0dd46be649c00 GIT binary patch literal 25523 zcmcG01yoh*_Af0dQi8My(rh{eq`SMDO?P*9cejL;N=i4<-6JNhxU_1vvpwOI{v%K4C&? zTYdpW5k3J4roIN5H!=V1M&m)EcJo!-^1J5*#LFS;hoarRpxBwx>4Mx zl=|m<$gTZa@#+CPp}W&0bE?7d^19}E+*ZOwFyPpjeWxtMnK7RITeV<>Br|IXMK)({WgquWOfxbG8iHLJ`Y2SUeovx1a5$&c!Z_V>gaYC3?o&9`6pVy~58Ml#nxevW>}MPN-U>HI>{&CS{Q zW@UZgY-J$uLaM%Y`u$2C=3ECkL8R78I;ogphO8yJCB7s&Z#{uN`s(O-v+|g|8w0Jc zF{R}+dQyID<8O}{q@Xy^9SobW7{aVzxoxNEq}eS<#6J=5O`GE+mnx^0uCevaR)5Es zfXOt#Ybt~sY$StH+^Yqzkk)J5D>sQ}qTE5{H3wh(YSURRh@WbC;}*&}ExB((HPl-^ z$l&75Wd9u_-i*zB^O=v3hgtf0oBY&JYQ$cu3(R;O5mGt;y1X~U};mY3|1G< zZ`>E`ta2!jFW*LjRm3h-YnHJak~|dWAfd{2pUOrCetR}csEBilSFF>(=?ZUoP3?NL_uj(iRxWE3iB8_ z6n=~MogF6}#YS@&=^wdgl|w7z^yT+evh}{C-TBmo@&v=&-KB7d*QC~1=t4FmNE9C` z8w`jqWm~x$zDX|G_NV}61#fBgL7M*1Tw$ej(@codNPjtmR0}I;*I70w`js=HwllV^ zf-vXk8&Q~^?}n%$-42_%lSOf}q`KO6@D3`DYF{ z>GDj)9960K1+YLtzye!!)ciDQER-W~oXY4z7-gCN)0SLvwiP+*JJarjokCl{TeAM% zYW!?rpp;_ajzI!g)iOHevF*UAKr=Er44-5_3TY)5&q%A*Nk?!Gq{{;c?oym zpiSY=Mm*di-pR3C_T_bfsO$pUGp7&@aP%*qCaIK)&j=&pZhBq-qUMS|DqMTbFnU^PXc%Q)kh4O<23t%lOk8R3k@zj z7S`95ws@aj9EwIRuT`GWQJe2Hsh5djI}^!&7IlAdI-K1syqe?E(MT)-aq_XJi=ke% zBKet0J+MoV(^FntD)n|#zOx@e*!fD5iL(NM8HZ5NP>>F_Z{2?E)O7`1!5khr3J&FB zOopZgHfcX-$ji434m-gk*O`(+b%Kqedi2|b=y+Ff&Y>;=t#HOLXZ9j17b>?8sh(4$ zb!p2xT zbw_rhBvI%y>N(?OWwIz*Yvy{Y>!TQ8OBmrGH;T*OSrH9M0kxr8E)|X0$Ue)R(D~@t zM^`^zkb7}+czf&TMZ`ad)ag_%9ZMe9-UAt)goYnJ(9eImBA=8)_xhe$yErG>S*V;09&cdwgmzgc$7B*hDRUM2(hxEd z;|)cyE<0ph{-~H#&V--4SFxCA&vn*rQO0L8jqKH$!F5IjvaS(pAsL$lxdDBJ*G!ql z;>WSLgN;!!bkTcK!uzacwpgU7GKSyi5+T#Bb9ToIO~~-lnKMJ>;}yk)Lw2L=$O_Wp zz6E1Z<0u3%T)gs+eW%qJn55MBnbRxEQRv!cg}XpiBzTe^Jb=KGLCrbiEvxQ!H^jAA zzFqm5jL`7$`qf$GjFXO;o~zgMlEGJ=o`uTb-jM;2tSOU_fVE{Z_Vk@*O{s45)>A=? zX_ zjNh7w=ApCWU_Mek_;E}t@%jme!)-3EwZ*qXh z>8K4j0YYD_2zViU4B-~i?3;@c(IUI<<6zUwr}jJ>YigRCl`@Ft+w%Fm7%Qh&+5JFH=8+^T8NANpj$bvus1 zOHUn5;JiKGM*?L|x_4Rr$+g#Ou%fMdX;3Kj2M@n|c|9#BMM{FAmuQ8Jk_H!6d})A- z*R_r=T?3CN$@jB&xK%vbpI*PkB)Il5C}gQ|K7)XN5cJp|Niuc}D2(c@^ZyYjZ(aED zXe_nGjK(d?Vbrj&R{<;Hd4ZfM(a41T%rUQnsiq!PmH=OuW2Z5%L-Kpz8hc&IlR6Psou+b zHLMN0-Hq)!vssNAZCTrNrQmY0HZ5l~UAD8ccAU7%qPsbr9X9)QOc6coy*C7H*4?*F zcneQ`uoD#{a@iqSlq6P8yu7w8c^#iT5lW;iaUZ=&PvL|2&zD`ex(-f9`7FM_c8~AH zKbS)ZIq;|4Bp@-MDVC5Cp`?i17i=UCoLATMtVzCNC2Wh*X8=^UBGrVfa5Xf*YG!b)XlM~Fo-ZGdfoJ!1aWk<*DEAAha_ zW1?u%(`;q=W5a>k`SCWq3Q1|e3jxU4%o^eMt)j&M@8#(%DgQ)lkzV}x48_A-z7#TE zGkoNc03Y|z0lEj;Fz;5g{o3y6H{+p+p%q+*XPyh?E}K9L{a-3IDD|j@KPumkPkL5X zHuzs!IJF zjoq+s0rkbB!xjJJi-Hlvmy zYRvHDNo4dYegYE1&-BMXBxpyr*P0Tq5mCHBIHfhYHg38e%}` z54F7F947ttE>jcox&@{aqK9=RYa?wGEH+US zm?4k)$S^)d0hpDNR~MwM z%mke2&y!k2XJhZhW&GwpS>sV@6a==8f!|^U#gc(3PT|W@^1_=UPGg*OiRc|%El&N) zp$O|)L4y-!;AyFF><-UM)X0^Jv>Y7I}=fG zNs12rQP`MR7AuEZdczD_13Pm)0w%E@?&J46gJ8&F6_HhYnz)yPpX9IVcxTatMUb+o zEXy-8aNueCcmW}o-9`BT+u~Lzn|RVnZmAZ+(iW1Ht9Etbm(zsQE43CL-wS_Nal{8%h{p@*ufFd#SO zS9MJ2rkmoMlrg=Y9t#P?Es;BEjK-)z$8&Qv$}js$`W7xvDt0wX$yOynEi8o!PpqkxIbwE<+k3x_SI9^tppv-0oE64Pvi$XxlJs z1R9KIAl_b-fmb@hs_3b@06>RXM?Kx$*PNFQp4T*x?R zDicQBf!&^DoWfCTmtn&2*3^e4oFlV=9-D_Pv5M?iX=tv!MU#})J2Oz*ebeEkW_Lw~ zxBM1MsO0%VCDQoSt1X;jP%1!w;CUjRoMBFk|eLUxMe^ zXJMK@_JvG!27FF6R&s90Jn=SP?Ttj$1*fNW1LK0l_g#ix^kVWJDH3-P3VJh8@Hw&K z`_T!3T|)4i{~?>6gwCUIqGP6|{Vkjr|CUYi&Q?Hxw2mPVAOX}j*5S2uB2;^nQ_OVq zge+|I8t?#FOFNJ^iI5i5$_8j*N67Ff#X!YCTT6QzJ)kYf2_RK}EksB`c`lmpkkK^K$6ve$V~)a-Jmh zpX+(t;LqiN_5y;3@ChGVLV%dDzAd2|{3Cj@@N|!>mW9_K1dU`5+9~~?JNj#cUjy*z z*y)&A8vY*X7laZ(I~{#c4I%x{vHpPM5w>5D$g;pcfe4VLV}hr90uPjAfTw#J1(c+N zr+eBKK$Z>uQR|TXdz`2J{y!M!kLB>{*a9Dq79g$2ry$5fDGW4o0NNSr=}=4Qni*T$ z1D_6_A84y*V{Bz-X+!w5w)RRGs)33h z=llDQp5<{2T0$nKM@ofQ%h~JNJ<|H) ziPHUz&=a7)5c+Ft0%E+10y32H#^yj{T z|JoNl)8lF%@1Pz1$36VLo8NoH6L3cW+Sn{|(N6a~0q(oF!z0B_t$%;Vf%uu4C~(V18n@|4cm$ z^nbw2!tfhr_@6NU4FdxM1L(#6^Li|Otbfe^K8W9N{QL7Ka6j*lAp8vkEj$~DvmPOP zJf6qvDGg%7$D?^nKVDCBfK^dCeV^WQ-Fvj1n2Wo7%X6#EOeM{Ixo{R4!bsO%Rd{!Y_Ao&O^ZJTmj+SdSF< zo5Dcl@Q;)SYV~;fk97E}|Ib-LrGK2wKYgM8VfX&U=L&LCV#*4Ci;DjN+2e%&05Upy zy1y|4?dlggzn)KY{lqbUl|OOXZ%Y0B{HylQ{{MpTPgEY;J@N$T4#I}@=g9xk?mvtK zs{cLD&%VFg(EsA;pU+=yo<{r4zfb)5lcRpl{C|P|BPM@x$fIcbTNXdzE~#S<()j*& z!kZVQ1wJW(EFj&8g`Q30F`x*FgEE6w%?c0TvDJIj13?uarB26682HFaKeLZhJ=W2} z1AdB49t%S=knRW%kh24tD-zPtvcLl*jBRZ}68cHnKS@HsqcQ-}AISi`01<#VK$ZMy zp^q_9&|CV6o&ILZr~I!i{)~728SVs4^rxKX`yC%;WTbun{;xo&p1!t@uC~5D`myi; zxfpeixa9bmRBsOzl>~IK$!(Ou?d$eazJ%KP8^hxv^+^I74#WkH{sj)I6AyV6-lN>Ihp89-xeYi(s%%w0CweuWTNKykILy6)OX$6c182 znb<%Npj%>q@~E$0f`VERRO>@rgJUD0uMu*k~tYRgzYWOlr<}B3|30BDBE{Nu8KQ9t2F?*?&!BDACJ;oaq; z`$bnzeHfRR=X%J!O1C1g=bA5cZ|I(@i*i846IVOcHt{SHb1o8+E284qU2B5#pMiT#Yn&cguEz31D-D)+@g<}UYgJ?t`p3}Jfn!`oCx$ zRQe~aGcz;81Af!`W7q#m?o9tq?o1$FQ2xa-jEtZe{-S*ltpaoax&S?Zo~60D4gd%+ z1Q-E~0cHSmfCa!3UZ#RM?&sJyn$0Cw4^AH}Sv#H&@Ascy3??(23^)!t zH($7CUN~p)@vQs5Mu!LL$kHTItGi}xB9gM`S*%jKu|aF01Uw{Ti{%cz9oWxWE`f$s z=7vUCzfx>)vx93mhPR{gS?TQNfL}|mS&c7_#A7=$5bsY}fWFn`v2c)-IsNvP#VkS+ z5OIGHyUA&$W5En?!Ki&v!3OO{ld6QC*(ZSs_aPG9YUnV>lj}ZG?E&HZ!C&ZwKKW;D z7A-=mcW)%Pl3wc>Zv3#RF`XRrEdsSu(r&n7zr-y)oStud!#!JYlYn0XAzmD zZinVOwkHSUG~6)7*E(fj_n7q;d0k5C(L4?vMH5Y+>zaAv#;ue^MYrELxSNL8C@Z8d zgFI_Efo`t1xP6@waK(ZMw;{j+pY48g-B3bLuOv0oallLD^dR_ynlc652huoueZ%|h z$dxZ8t7bgd+;XgV?T#tUL$(b9mWJ$YiZqM9|+MUcD&!;`ZFF*29#H@#B zAP`<51tY$lL1CG^{P^8x%Tcc2bh*i-ZE$#{R(mVOk9PgA1F(~1G0Em(`4 z@~%NbykrU5h&Gc-bzb!gT<{wwwbAG4BEst#U`F1#MW60C)Mq)onHI5euoz?6=)4I$ z7o@xq5;gtV-4@*C_TGe3zn6wddz+ZAu4r)zSy@|`U!{UgMz)f8h){M~8OHA%K*YX{ z{Uc?sK2Eid21D+p=7!yDFSzQ)2s$NL)IobSN+TnE)2J41%hb5oofzTTPE!vM6d$e$ zdHtGsq-e_`b4&$}f+xI3>N$*%mKN}wI`dWYduN&XSo(mnn>A`eziQ~)jnB-6cU3+L z5|Qf5fmjkeQxu5#s9BJz_2U8_Dm2p5z&^+P+`S>>T#a`D8XQ}F;2fuXG^A%_UvFI5 zC?TppK3h6bgvV{sdo{O}UBJvv2rww@)S*o(eFsT-GM*iKrRptd31*@V{WA4cBj0xk zKPuJYo)SHi<5S!$o=$LQJuS7(9;Afw-BX@g_2)^de92ufUIW3LUKhp;r)*izV(uqwejIUVl+qZ^&xBI==||JW$5Qf(Q3CE9nJsBOkI@6ASG=1{M85EL?%I?3qqrF z?~DZY$G2G6!+OYEco!{hop3T`q1Oyptg5&tcOpqQf2EKnEk?~Z016#+j<<)XnQ#%% zhH^LUM@?&kw-{L`@N1NiRVaAbX36hJ7!kb`Feh0LtsT{6(#H1smQAjZV2rEkC5lcG z)28Yy)~9lDNjN#JI5p2XFHRM7oOT#j>4QKxO?!UGQa8RD`i#tJoRb1ERpT4h*P4EA zsLGdBP2IX*HcNlt36wbLWGAo(@v0-?21c-q=nc zef&7AzLKn;7$U5%wPE#{qyQ;yTluuHt}H4mN&MOB0GE173ysv7W(}_>ga?w{(!;6T zA&Y^Q-U}YKyMWeWNDgV;gw4y29Lyt`&R~~z86=7>vG%T|_aerF79Ji&LCJ5#Sj-@d zO0qbV_Yvb@Xlr1lK4Qa9MzAN_651^(dyTpgm^9_I6%1jC1TqK|fV&W1j4E9Wa^b#e zPf4jasRL6zm?#W;`9UOfEB&GvmBQK7pn9mEUyU;9AMmi`~_L!z(GsM+RGp_x{ zh1RRV@YyB3GZEzu+N56Hdl&V-r!2&@Tlt1CURrwYq(0&G3aYf%W09~xVg_oswGU6j z9{#g(j>n}G6UAC3%;!VRVOMTRIiOfsjfY4?fnb) zhjk&Yb`k~xPscZTq;I=LOQ}j=6pR$yhxNWf7W=MM%d1j?V_)^Hk~$W+8)Rlb$H^6X zPnsVjgox7v7lSbgZ(DUVHUIqmt9@nNZ?1E4G;Wj9+r^)N&Zc#0A|s)0FiNX^uhOg9 z;>;9M7%|cEZ24=!fT6s1kwVRPxHlg%9XwZ)GGd|5(=zv!3O!E7jzfC4rQDUu@=2@E zmT+e~E&Idf(1c1mi_$7*6%PRyB%XZgXQ3uY%6Rwbbe(iOsY9AjFH zD%3B%lX9IRRcfw1+j1UN;H1dwDPim>BPQZ=PC=)|U>KF#j17btV)0fXh&z-{5XiYj%Rw07|*!MgeKFlpl0KV|&)iJu;K-@b9i(PVSthh~)$4 zdM0JYee(c`OboEEBS7nIZ~TvbJGMbe!Y}yQ#ckF^?0h_+ElTQ!J?u~KyW01_&f<*M zL}`v>VUDo#SCi3u$2M_gEpGw?ERg518^mSHMoUSyKGBJO;pffoVeIn?;1Ah}e|7`- zx={PgCVqq{t6hK=>*Cr~s0DVG#HeRAnAm?*R-!aaAtANl%vnevr~2)y37eLWz>BStlM#s z8}IYB5_c#uskoyaz+gw6TK=S-_|au&7T$k9Vqvo4PFM2k^HX)@1q6qm(tGzGI{v``~U%fAV3Hp3^IR30b(FS zKms5MkOs&AK)x`5JU{`U2v7njgUkaRJCKE-YonuQ3bZo=8h~;?(@*ZKC)2^q(&Co^ zp${@444&Lu#txvA8NdJ(uz4~njGV2EfEFOz!USOYWM4dazCc!ng|P(?WNKJ~?jUpH zG2Zhu$y4g*6u)c`>p#3`KMfL~xv`$*kWeQ|7(8Ye4hk1`qEfpB+OY+C-ZhcBC&o;qx{_EW0XUOjUVEYWg|6`e zm6sGMFbzG%D&~@y#q@?M^P-WY-M#i;@uZR9pu%%{)^(_HGEFanZXGogiz`CAOgZ*k z=v%;Bz)?^nQbfhW!|T-!-SsfN_42RTHJ+dFte0thM4*y7U}C>14WJ~j(Y_yBzAB_O z$EM5ZRIQjRxO4{~XCl9(R&8K<|N0F%JqHnRv3HG9aR8ww>0-T?BXRgg_hF4Q!Xbfi zHr)|iS++H~>l-~j+1QQnM#l^xBPSDat5MIp-Ool3o=0##mu9wU2ML#@a5TYlG1a68 z!ZXQrlzSDYOA9$Kro!4?=_7ZMkZchgBM*a4!)6KgFjnz)R&RUi{13i*ej(@ns_bdi zGui^|Q!2SNn%H(Wgcw0Tu){(3S((qYNC~k63IR$cN^#Iahe=!fWzsZX$?J1e z)8H9DG`hg7U^sqAx@f0VWvLF-*kD#&NIL%{Q8S`^lrgwxZP7_QR>8?op-U+B*3iL6 z{A5Q_7+iza>Pt2CX2|EYN0i@KtiIXmvU$ePAHS`NE-DDv+^e*1^MO+$t&?&)nymgB z7Mm{>l6Go$+~2d_<0*NRGRknaQ0OTxCxMerlX73nSKj^|FCFi5zg0#w{pwpKj@Yzh zjtcWhKNU5DwLyyHGmOu%7h#$G2kCoE?5@>7hlgFticEHMJ5=_C^i`Guqy6#P=e8`| z?Qzkx(s1rKNna^d-YhcjzxK@`TLB+sU~%3een(F+7yh!l101^v_ImE4*Xc^WE?;38 zKPxP$RaX42ntYnJD3t7b;oknE$x$L@;c$aiBAQ(7H@Pxz4B=y+QM}rBo=oH$1_o)+ zp$RIBaQW6i*^Pcle`j4%SA#T6YO3b|CqtHZCI0q&=mW`NQ2a4VZ)g>%aT3oRmXpp& zYf}FLJCqc8-l7mX`9<_019@y~Nd;Kl2-OiL5ni5stl`z#h#ouktH7_T?~Y$%0zElJ=C;+O@q0eJyup?A z;yB?h$N;utrIs%dGrKm3qtbRP`pfJhqt5NCBaK7oyRoGzSBM6!EwGbF&6h9`u728X zH8ZsFv4TaT9p!dWNW?I~BhB-l55cTpO!dxpzgLsmz2aUqLWjCCdXDIoru8gS14Uon z%zEZk{mVlQZ$qH;#eFQ@cW~B>fO<_{?7?QIw|l~$vzTVFEpPgpT+k8pFiQL5D4!z- zYHx?CM34xg_xW$b+r&yL<~H)QW5j(RE2}Z#-9x{wa-;?}4vS%cp@1I+$?AheC5z2rK|ccLYuEgOv=YjPFNmy7oD>UV=tkgo_BRy>SaGiM%JBlrtxS_bw_$J+KT37}(s^NzNfi+3z zCK|wemU0sK7RB_vmsX3X_R`6<{e?0Q+jpdbE4@`EwQj9;&zw z;oDG3_u=`0YhcpAEiBjCw^(pX0#V)rlP#!Y4PV7)E=I6RvL?cEM3mO~rdh=PaqdL% zr6a>eV8PU3ke%}KdK^%b}?)KIR9>tt!DWxi-rL~noTRHhH zm`U7|iskr7W#J6jqoVucp<+yl#z~@8_?#2U+KQA^5XHI58W5YRrp|h5sz7}!w{1nP zW#l;3gJf))v;LMfs!lT*#LagVtkOYdUY~uC0)9#w9;}AR58}vn+-pg%=C31M0 z^}z6bhzPK~ClFf{H0Dz5W+}2hsGj*44r5$+{vK&{$!(j`Jh}1`?Utx1M^&+>Hgk!&lcC$+iG#y3I}C23ccXTPHpr=bwcP~4exNeRl8K<-@oH_A}@N=$nmP< z5c0#S`&S`5ro}7AC*$xd z!}MAdK#&=JhLlQE17~UOi2>i`Z3&h(IWou7&MoRWA?rq$nE|1OZkQxeT2hZy=O4!6 z2%g(R6wX6!rG5W5__nHM8N}s?u%Ne7l{|%%aCmel#I>;9jm&Geke9-Rt0}UDG+u&&CUyV>WehTri&XX*?#=pE3%}aw{}di=4H!YVUPKj%*<{zmub!ooP{& z%e>W!HPp(ij8W0*(M7ekiI(QAURS~3hC;^{__X3K-=B&+P&C>gtG(_EA6nSXtrq>+ zZ+kKc-S?nXTQ};4)Gea;U+#&$@+*B%8>M-DP|EbVkgD0!Ge)3`_kd>h;KNE zp2sdyN(K846}DckN#@mjND+Y@7JrE`j{Z%;dSn%~z1Y6y5Vz?8k%gw>;w6h5g`5~z zdJYxd3tj^FG#M5V6FGKYGYc=x@|o{Uoe7$1Y6>dppP5V~c*9lHV8!kDOzjVP0$2g9 zn()*!snK}oDJeAJP%<@v8qXj;KR;DSucfe}I$~DLyU;Xz{`h_c%CWO!Q_Sa*= zk4Hp86PkHtjh1+jHyt(%RF?7Hd=JzOMfKr2rPlB8O{cb;rOIk1}E zQp3>wJ=EC4w*WE0_iIIGuSflMy{J6Yp9_g&Y$9g87;aqO)m}Dwg~5P+hIkyX%z8nba7K4Smp;0g0sw)8) zYFkyrk$1>9?nkDaMKM5K#aG{EvOTqW>L*-yJ#XWz^OiU|K`AY33>zcd1E|9d(LwIY zphqlXOhj%lVn#*vDnHDPE-O|bC--AQ?mfHj#`5h6ubJV?#7fl=6C^kG@dLWFw~7mT z%qP#)2a%>qz+DUQ|&Khfxm7KiLulqhgaz5-fj6`-OhvPkJ)R&YiFFk=~S!W}n0w1c|oN*Tk zDL(LEvkwGT#Qpm0L1k0}7WzyLURz0%z{DCARgCUV^F;Gk==3aK3RyuvTRSLs?chyE zNdjL0D*C~W*ick5wd%5HjmvTvHuxHFC_~R+)=@@&MR1h6a<*E2^<34?A0bXOnKvUj z<6{uyDfVZ;G9&B#4_~1TN!-JiE1C&P26M4%+ESB3kQKNBZ{DBV_3-~l+>Q}%pJTj^ zz+R&#dOk}=bi-pTc>wNWH`F{Zi`y%y$ZEMJj%0k55qM-Pg}vo|`%lOLg{o%uLQ}XygPHzlbAw zN!eSbRQ&Pd7GlZwjqO+~GMOYNGE(*W2#1J!koL@!if)5>gQcvSmxg46;3V8WX9a&Y zTdHu@CZ|!N6_`D3QAW4G*-dA-vpAeg@A~1GiDFVOxpHjAP`)u=T@5+Ir$XSaN=cRd zvya-+$4d6>t;3e0ZzMJ9Ytx%GRygAMFq?LJpx0{M)oTikqOk(lZ>q;c4VuqBxP*n5 ze5;qft;voa;HTrT7=ocd5=Pp}ALrH7m1#f`n;RXV=~Lg~vlN0uiya#U9yh3as1}Jv z2vAKBaiug(kkY~XjVwk&dU{;u-fzC*aTIf=+=Q8Weri4_G!K!H_s`$ngY=)5|$neWW6zP4k?;@W!0VBKCBK0Pmg~S8V)uqQ`y1kVRtvWPS z78Lr{CIqTGi%swxGK>Ho-3EjzCU^(6ZED4Kp&7!}|=2HZfjPsk(-a;y!+fsSgva;DpV!K{A^0h=7U}D{E3#g1W5I zV+i#dH5*ji?f!t*9Iz^sV2dUzyRup&hm%@doSGtAw0g+uq&S!hm4hRXzIUOB-2%_KT!f7?>!rD2Q$?b>LF0i+hXF z41qhm11jGbqxcVw*=vBE87EdDnS}mkf+%Swqazdflr&ZERJff#Nd&(Usk^apNh7@b zTF~rS^#HT7fYxM7=LD8kFhsCd=dk;ctbuPBRU<`tJ)rAtgFX7xbB(U*hxX}nEndJn zp_2J@EN;r0@rL||!J@CTUp4dwJF3z}y~CYFj_u-kQ{Hrz=hFfef#bph%0065^l~3u zWe1T@6DFBp+0}{-BkS7UO2FzHwWkD~>F_%myE6uaGPl%`q^Q(n~jI7KF(=b~O^TAY$46WT=~e!7=&_e2ZsbkgaH9Lr+!rmB~SjBiF>b?yJqRMau{}YNm18Jz?O}$^UenQ zY@;J**1-b`_3z#zJ}|Z5AC(vT^Ygz~R2w@x82K0g!7iVjTm}bTug46Ixulh9#qmL5 z2Kv+3;r(>bNuGPh7P^eocSJ50^2)1ZhIud*WcK}2Sd++dr2<*|Y!ayJk{iGaNs$d#@>Se_kJ?bKo=W4S>=Z=%C z-h(}(r)BUZh$B-i8|;X?L_Df9$Nz&FzA996q)U_>Qi+?iiiyPpj<*#lyI?0V&+oR324)GVbfM3PKL^WfUM%XDUb6QeG+$j-O%d906g?z%$LdH z_DpwccwYD)BU-{|2(yKHm(*fHUX(T z-R@GvBQcnpON_9&Vp9l=3z*9|+|)4}E^>@}FY3J|r?lzwh8_~ggDyBZqQ*wCS2Z8l zRE201oZCxQ?Je;w7M!v!`GH`>q`Val#Ymq}fYMk{~Hu!^HH!1V=CV6%J~b5hMt z>gj2RAqhDg95C3o48@4nSY-ol!z;J%4iS7J)OS4y&pV9WkrDWkbo7uOciHE3-ptv7 zSM(zz?l2A{e%n`?1dYNX%mk%Ll@zeMfwBps#usmdBEFaUnoTlv8?>{D6S6RqlfU~! zQ&^bSR9#C__Fge)`10ZCm4~zf`8}S=>p5^P@}1FwM%riSlf9RsL%}d(Pv^p#&emhBrN{4m%EUj9!nGb_L>@L#} zt!Ar>7VHifT^txAwq!(XB=mKvgnj>cu!!pmY`4!(G&gF+6&g~Q5Ob600 zXqF+={o%eUizA3HEn-jXoSMz7n6C||3ok;uGbS&F4lD?GgW9f+Ha$4!C*>RcSd)cbt5^_S3dbW!1 zr?0UxuGnPW82edHN|u=5jOepsSh&wzjdhB(#gbYwaey&`K1j(a-1LS16zV`?prR&T z2azu0gqFfOCn8{ElG%X@e#t|~i;J?g8ZH84*sB??>U#LmaulGq2ho+?;`6BnO|sc7 zTx`I9a8rX7a*xM*Q?C;7D(lV)!-W99*0o%JDgK3fFRLvM(nQlFwS<$4 zx`~gRvgpo?Ek?m?y?=NqUVN3qjGK4DRCv;kvZrfDfT3W%?T++iGfn$p-GqFuq)BJR zcsGUUlu23TmS*M-o#ofoH})l30ZUD<9S|x~T%U0gG1a4&->J?Iz}2iBEqVFFdz|^W zKqF$OW1joOIn+}aMqYDSO2-*ljt+}@>uOKT*cm$22DJBXHoRyNqP!L{SMrD~E6HvC zdWB^Kg;8DytHv9=Ft4c6XL5aq&1_~Tb&8DnEugzyerIz}`2o=Zi@jwHtA%HX&g%hZ z8Y)6z#1ou#vl;U8toloR#vS+A(&5|-yLR~NlK88n8@4(D6J|1uoBP;-uuoo@W}Kt*a8{iosQ~h)G;4z)5f`VqOgp+AQLWYe25Et zm$Yqeqo)Zwqvs=yFj4PW(Q2b-8D_tm3_b_*U?LkV6wboaTQMh@VUqN3$zphUn@G_r zMNl?3LS=!9NKhNr7ON?}H!B-VlXgEvA&NttC}h0H!gsJ!g8vbC(L(fza$K`(lSMm3 zd!cHq{Z#9Llzp0-?EpQrM}T9$P$r(hBTGP)ji?1_EY#JCG?@OrD&01)lE8B!l6Abo z#4~_|t0EgtYaZFBQ)hWUBRdFtXV}_2=>7f-hSR$%R92+xK6ZAR^n(CKuUKQO2Hd7_ z1Gr<yh~CJh&Pd~)&M^}8f|@S4@=_xhhPSs*!X!cdg@uU^ZE77 zk-;_GlI=-Vw2T+U{V_(b@zt0e`b!o5+ZGc zYw+vbZpt@MoZ24FV!ICZFGM(T-v&j*@f+637dkh39vC$uY<>nfm8f`H&7{QhR^rv# z>i3(~1EL-1ziU~0X>lMm2Bwp!LuA?le6b}Y&d=g3q`suzPupIsU)sr;CxJyC=8NxU z6OUE~-H+EtW=vkBzra5zu7|SlWmsvwOsF)Gv5rEjA7Jm=sT&-)?>)PfZEoq`wBj*q zASO4@WJ;X6SyJAy=l+fjJBvpXEG&xtZAFYdM$6Tu<`CwDJVQ5!r2pG)We4gS1E0i_`pdS@Z7e+U1)?Yfg9#hDa_O&J?N3D z!gX}+E-|1;wr@{l#&=UzcU7ldr8mu!;d^@#k5#RmuqbC{ddo(zFFi5 zii{#rQw?p^n^V?it+p$pUPU(jm?zfh=w?qNAC>)94~tJhQcwEcvv`iycy#PmBo=PP z6EbnvIPyP)i61{B{wHDL|NMRbQ?Gme2UbQs7O{B36AA1ljG!M<{%<6jAW3TA|;FO^Xo15-0fyRR2H) zSAj&7ajHQb&*9bxvCW^TQ=k^!OB)QUDwt$j#VxHqX>>a2YS1=(=Q)^sa_`jVesJUd z-Lf_k*wBcT0CZfcWQfshxBZHH} zVi6L&&_EKTlh4qspFq!$l-y7CHYvHiVZe{JS$CZQA;~exG1lkH6u>`%uC}Hg?XXo7Zoia8BXAkw#r)(B!ItpJ%k5A|;Ufsxk6VE3xdioS{ zJDQ+13!HhCyb?aVyNG(1J6%~p^}kxX@_4A)_TM68SGG`1wh?AIGh-QM>|6Goio%R# zvNi^jHA)EC)gwZRvXhW4p+}_bNhM1{S*u63=yyiTQ|f)6=lA)%=dUyOxt9A}_jS)) z=X|d3cZ?V$_PG^2@({ycTd-XmQ7T_xP*$7>C>D(wOAPQjoO-?cL`7ZPa-FvmsfGqjh}hM;r^8CN1nF{@kjtifKFZofpLsour|)K8SR+A`NG(0jg`Ss8 z@3Ea|7(nFUGCl)=hAPExsygx%Vk!!s7HXxqX?m&eILE(a9h8=c4+XZkh3m0l^2I@1MwX?8j zU-slq)~&s~(S6<)m#@P+d(Hb)kIau$oV&$Tui4h)L3u!W)1}aDhY#dXb`pNrmeB3+ zdbGgsRQa?mDbayNjVsius_RMLz;ppKm+=Cxb@4(O?*Wt1)SVy3F3S+dXF6TZqb176 z0(bT0?s;M@6KHV7PP=;Rv0?x9G!^^}J|o{;tfl?Fc5E7OyP*7Z5~rzKkg49{h4FN{ z9vcc9Yt~N8PRFi4;#ekq_G@2>VIP3jdX^d5a$;1fn%Bi%j6j$jPj5?r#7k%x$LOp? zUZ^=XKq?pr8@#TaoVY)KOVm8{)Wz)AXX17D3hgqfLVEf7eR^Cs#rV?A zeXoh18ScR8#J~dyPiIZqH1t0XRK&QH^_kV?ZJRo)lpUmsfun(Nz-@F;#+LUwtlRAXUwdv*A{sdT^Q3;vScsMI>wD_u9-U-RAdlXESY%` z&l-hXW>iF+@2X%;P;3{k7-8c*puV>PYZen0txXWPAXag!q>rEDXw<5@KdpXge3 zW~auodB2c9eQL!j+}%n4mr>DI^0Z!(H|*5V2(I^FAVY}94X)d+p5RqOCsi~TFI z%O~jx)ay&{yfE;1-M6;E^O!02Ff!}K(psb>3=N1rDM=f4j^$G2DI2V;RGc?kITr37 ziFy)kS>}#TR*zt1B0QLLXwH`jl7k9{Ehk(&P>U-!1_9bUSL0`{3@VyP1|18Zg!}Rg ziV_cz>MjV}oJMk%Ch;83eso_FxBHJ%<>dx*B`=#)=|klgh2LG`k z?&!_xB5Q4pZ1`)p`d!|}YZ&tutakW2RTdwYIPV_CTXJ2&FM6TXZ!+u!!z!&^#xP;@ zJp*PiF_KI=%uyW|rG=W#x`(_tYjFfUHtc=IAhQ(%q?U1+mT$E(QhDOtFrV6OxFues zA~sNBg>bMSDFUW6cIS1>ssL;esV;o!$g6_A(@Srght1!M(&OfMY;rOQR|;F)%L^N4 zor#0CZ9_KZ`Z_RC9u|uc-BXrYx^u_<%#$J|EGA~n$G9Dnv^YMUVE;faYlyU+I$$TazRoWc5BtIJ@CG`iP6xpMMGyhKea&v;1L+2rJ+`K39|SasNC zm@wby1&H?5%4=~AclwzP$F9{^%qRy2n)>fGocGOL)I08>_gKnkoag$*@FS%eo`=Uy zw(YEI3N{kCx-CHLVG5(4ie&h-Yq?VH)fbSQf+gj9DpEB=oEe8RaLEQo%R<|D*t9|n zqu<|Z_t;hK)%v8NPr*!5W@Z?X$BoU^uhRhEXeAJ=0}a*G6iARqec=xgJn8WLB7C74 zid#OH4icseB;HJSU0++q-Ql3ly!hj}+QeT6bGaUu`@|6Te&qXXe&Q|uCTa9_)Ct{G z*kWmCjIDj2X8^;(y%ssM62_Z32<@V(i<=H>uabI|iKNH1q0v8C1u)8X0^%FgLDqTb@kOB5&sWo5BwZ zJ2VpK=*}(kzUjf*{iZCU!PEXtS@c^7-?yrW);T9DL&LCQzm-KlfM@<2P>j}e_n(R) z0PMc|xhMhwi{HUB(zMRH?|pQdVBZ|AD*6JT*=Tg5A!lf~nT=+)-?g%B;Ano+pa%A% zZSF?f0DJ#XO3^-ljoSaCl#)fs{#Z(xeSy`qB&K=k0Lr7luxP6?FQ+&;-$=6HwTUYo z*I9`OcaIV>2{F%FEDdgCy7G(ADnl0%Gz5q z*BW5w%RV{1J`_AO6L@#x)XRy$L#pMWkVD<>{+h>5o`X-=zU_XTcwG1Wl*Rm%_}SY} zbn-RZiz}gV_^@e>n5j$72VZ!GX0v%V#Aj-w#0z?bfuIge1Y&OfQ`1UlT7heN+fYBk zC^^TnuGUzC$TdzRna?&}l@msME)i49k9yQ~jhj2qC-(&NXWpgH*M%4x4_`h$Z;(}_ zou0~5sKl3;I8oZw-=PFC(%?{tv}p!u72}mfcFl1fQ|IF}s5KDT&3TqROUypPl2M^C zGHw^jp8FoB$cT`$YQ)*8Tk42+XQQE<%eFgijrMReC++3dvdId{R4zB+Iv_8`&#@+D zz_A$hStGGiXrv}SK6Zbbj1GgADs<%2S!*A!xZ(-dg~ZOs4_4L(6yyenf{;f-KI8A@ zU)tkcT%$TJ5SoBlZL(q(Zl2Pl&T*D`(^or*SG84=p9(i{YYl5h3Aob5wshDD+!$Kg z;V&tvdMCFoiz@9C%{(}^TWK3AE)b2%O=>9LGJ4}(w6Q$oblk&w0czy1gz47qn!1Lh zTc*+NmEE3sqhrt1lTvCBXOn0A!~)nKFb2M|<%2p+h(FzGDkv5GY6o&Y@8o4WW3-m; z(tBPG1*c5PxzWDbvkHs4y_Hl^`%N!@;o`Ojhv^)*}5uE@e?_2(p$?|PW9p!O$c$XSLyElBKh(`o2=h+-3k zksvddPv=FtHIWC5>#5Sm_ea<84eU3o5#BzezxFmH)G5?$pPuc|YzB8(1ShfDo!_?U zlIVHI{QUR=e|jytJvoK^k1ZZ$R`rDIF#WZR75yV3MsF_7#K&*Wwj}+OfLw?xh3gtq z{j2*!wR4OEirX)WiLW#7w)CrDNmnWOXf-1(8qm_N;cW-UREXnsjj2o5#;5oBB-GDO z9DU^2yuL8?NyLHE3$7cC%j0?;cmweezt3O9L+QMI-Ky{Uv!TJKAE5VJBKs-$Nv3M6 z0ZPdIS&sWzpG-w}RHxOJ6Ivt8oysXgE^euH*8;3fE&C{uHmXDe zI;C4U?np07aK{6^(&OGP;ZH*Cd73%svo2>49F|@-)pRF!wx3ogni!w;xM#4`cL`R% z{*Exbg>5JrZvj6Q_@a%k6;Qca8Rn`O#ji*be4Zi|di&KAbIk-_p1gCxgb#nZP(4bO zSmP`Hd||7W^D-{Rnq@LuCy=`)=B8w!q>FOD@dqgD#o|DV=bm@=vRFiZ2u^<@^i+zM zr>aZ=>K@dY=5XGfZFlYX+b9h=mhkqx2JSS?a69wcs0bOlx(xo1r}{gah8f@Q`!GbW z(A}7qylX1))O-?eq(@ZM&t&gRDLtPF0D6y{Nr6}>Q_u1Fm*`WvLd5DZhdZp40jwVKrbqX^X zFggj8;P~@7KdL?byw#$Efc1}M+fqq__5I8H z7iT|3?8{yatGjtT=jAgm2Zi@)&%JsGOeh0EImu}GmD)G2##1{46xOMA0;Pn-SE{3I zq8d&IWku~{AI)i{H?G42_SL!CyhI7TPQEqQ-sZ5~lP>2@6h&ZdQGsDw;O<=kcvHQ* zS1g!>MT_LK;gv8lWEE;xP^EOcVFfy1bJ;`O!E~+P!-utSYYVK23iDZ=Il8n!4ht)q zyix5}dT+_QWnz)TWma$JKz@fV!kFhuJ1h#{0#6Lr&lZW^`Kbkx)-=My7_9iVZQ{lr zoa=MwN4w!!@o;8mu#JWB7%6^|e|hCdL~-j{QV>ygF>krHZcY96noj5v`$wC&!e1+i z4Gx;iid8f$b;v!VFVPiAwqG%L#_0UAQTS|R~HgU;LyaxVh0%izX+p?m_T&11S*>spFyE-Xx+tfRrW@0KgvR2*`p- z1~_72NbrE6?6D{Z85tDT!R}wL2$Ar89-iK0*Nx;O5)clq4m6iu;GzKFM2G}=M-Q@_ z9R*B(Pfw7`XoKD!0p? zDw?}*NE5%r&XuJ28ieD}j_@q*gNn>b?TR)G4k-tqewm*%O7<5Y7%cV| zIWz!17jLqM+2E4-*@rY5^NU|unP2B8_iOwB07Rp0@&RB0S&)h6Cm$$4T6(h_Qbt;K zvtJY%E&IcoQ^ 2 ? 9 : 2 - (err)] #define ERR_RETURN(strm,err) \ return (strm->msg = ERR_MSG(err), (err)) @@ -137,17 +137,8 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # endif #endif -#if defined(MACOS) || defined(TARGET_OS_MAC) +#if defined(MACOS) # define OS_CODE 7 -# ifndef Z_SOLO -# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os -# include /* for fdopen */ -# else -# ifndef fdopen -# define fdopen(fd,mode) NULL /* No fdopen() */ -# endif -# endif -# endif #endif #ifdef __acorn @@ -170,18 +161,6 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # define OS_CODE 19 #endif -#if defined(_BEOS_) || defined(RISCOS) -# define fdopen(fd,mode) NULL /* No fdopen() */ -#endif - -#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX -# if defined(_WIN32_WCE) -# define fdopen(fd,mode) NULL /* No fdopen() */ -# else -# define fdopen(fd,type) _fdopen(fd,type) -# endif -#endif - #if defined(__BORLANDC__) && !defined(MSDOS) #pragma warn -8004 #pragma warn -8008 diff --git a/third_party/zlib-1.3/contrib/vstudio/vc9/zlib.rc b/third_party/zlib-1.3/contrib/vstudio/vc9/zlib.rc deleted file mode 100644 index 57fb31a3..00000000 --- a/third_party/zlib-1.3/contrib/vstudio/vc9/zlib.rc +++ /dev/null @@ -1,32 +0,0 @@ -#include - -#define IDR_VERSION1 1 -IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE - FILEVERSION 1, 3, 0, 0 - PRODUCTVERSION 1, 3, 0, 0 - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK - FILEFLAGS 0 - FILEOS VOS_DOS_WINDOWS32 - FILETYPE VFT_DLL - FILESUBTYPE 0 // not used -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904E4" - //language ID = U.S. English, char set = Windows, Multilingual - - BEGIN - VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0" - VALUE "FileVersion", "1.3.0\0" - VALUE "InternalName", "zlib\0" - VALUE "OriginalFilename", "zlibwapi.dll\0" - VALUE "ProductName", "ZLib.DLL\0" - VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0" - VALUE "LegalCopyright", "(C) 1995-2023 Jean-loup Gailly & Mark Adler\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0409, 1252 - END -END diff --git a/third_party/zlib-1.3/contrib/vstudio/vc9/zlibvc.def b/third_party/zlib-1.3/contrib/vstudio/vc9/zlibvc.def deleted file mode 100644 index c3492350..00000000 --- a/third_party/zlib-1.3/contrib/vstudio/vc9/zlibvc.def +++ /dev/null @@ -1,158 +0,0 @@ -LIBRARY -; zlib data compression and ZIP file I/O library - -VERSION 1.3 - -EXPORTS - adler32 @1 - compress @2 - crc32 @3 - deflate @4 - deflateCopy @5 - deflateEnd @6 - deflateInit2_ @7 - deflateInit_ @8 - deflateParams @9 - deflateReset @10 - deflateSetDictionary @11 - gzclose @12 - gzdopen @13 - gzerror @14 - gzflush @15 - gzopen @16 - gzread @17 - gzwrite @18 - inflate @19 - inflateEnd @20 - inflateInit2_ @21 - inflateInit_ @22 - inflateReset @23 - inflateSetDictionary @24 - inflateSync @25 - uncompress @26 - zlibVersion @27 - gzprintf @28 - gzputc @29 - gzgetc @30 - gzseek @31 - gzrewind @32 - gztell @33 - gzeof @34 - gzsetparams @35 - zError @36 - inflateSyncPoint @37 - get_crc_table @38 - compress2 @39 - gzputs @40 - gzgets @41 - inflateCopy @42 - inflateBackInit_ @43 - inflateBack @44 - inflateBackEnd @45 - compressBound @46 - deflateBound @47 - gzclearerr @48 - gzungetc @49 - zlibCompileFlags @50 - deflatePrime @51 - deflatePending @52 - - unzOpen @61 - unzClose @62 - unzGetGlobalInfo @63 - unzGetCurrentFileInfo @64 - unzGoToFirstFile @65 - unzGoToNextFile @66 - unzOpenCurrentFile @67 - unzReadCurrentFile @68 - unzOpenCurrentFile3 @69 - unztell @70 - unzeof @71 - unzCloseCurrentFile @72 - unzGetGlobalComment @73 - unzStringFileNameCompare @74 - unzLocateFile @75 - unzGetLocalExtrafield @76 - unzOpen2 @77 - unzOpenCurrentFile2 @78 - unzOpenCurrentFilePassword @79 - - zipOpen @80 - zipOpenNewFileInZip @81 - zipWriteInFileInZip @82 - zipCloseFileInZip @83 - zipClose @84 - zipOpenNewFileInZip2 @86 - zipCloseFileInZipRaw @87 - zipOpen2 @88 - zipOpenNewFileInZip3 @89 - - unzGetFilePos @100 - unzGoToFilePos @101 - - fill_win32_filefunc @110 - -; zlibwapi v1.2.4 added: - fill_win32_filefunc64 @111 - fill_win32_filefunc64A @112 - fill_win32_filefunc64W @113 - - unzOpen64 @120 - unzOpen2_64 @121 - unzGetGlobalInfo64 @122 - unzGetCurrentFileInfo64 @124 - unzGetCurrentFileZStreamPos64 @125 - unztell64 @126 - unzGetFilePos64 @127 - unzGoToFilePos64 @128 - - zipOpen64 @130 - zipOpen2_64 @131 - zipOpenNewFileInZip64 @132 - zipOpenNewFileInZip2_64 @133 - zipOpenNewFileInZip3_64 @134 - zipOpenNewFileInZip4_64 @135 - zipCloseFileInZipRaw64 @136 - -; zlib1 v1.2.4 added: - adler32_combine @140 - crc32_combine @142 - deflateSetHeader @144 - deflateTune @145 - gzbuffer @146 - gzclose_r @147 - gzclose_w @148 - gzdirect @149 - gzoffset @150 - inflateGetHeader @156 - inflateMark @157 - inflatePrime @158 - inflateReset2 @159 - inflateUndermine @160 - -; zlib1 v1.2.6 added: - gzgetc_ @161 - inflateResetKeep @163 - deflateResetKeep @164 - -; zlib1 v1.2.7 added: - gzopen_w @165 - -; zlib1 v1.2.8 added: - inflateGetDictionary @166 - gzvprintf @167 - -; zlib1 v1.2.9 added: - inflateCodesUsed @168 - inflateValidate @169 - uncompress2 @170 - gzfread @171 - gzfwrite @172 - deflateGetDictionary @173 - adler32_z @174 - crc32_z @175 - -; zlib1 v1.2.12 added: - crc32_combine_gen @176 - crc32_combine_gen64 @177 - crc32_combine_op @178 diff --git a/third_party/zlib-1.3/zlib.3.pdf b/third_party/zlib-1.3/zlib.3.pdf deleted file mode 100644 index da12d37183a7371513c0991fd14a7d932fd42e84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19505 zcmch<1z40#_dhP(AT7NhCAGVBcXxyI0t+m)bV*1^C`gBdG)Om6A|XMueZSx5|GR$IZ}+-)=bkxpX6DS9nR9>U%*~`JE6)k$;>Bj_-HOe_W@1uu z_JUhMJYaBVVSo$7!wzWc4&c<}1aMmGNXg4-BmQOJPKX4UCCm}#;j0Suf;x&J7yvk3 zf6=LHXiDkn$RQ}DrF3N!0i5o#a{5X#a$+vlHr{S94=5tW-NPF0=^-Y82x@qGxOjTV z!yKX4xBsXlY(4-80JpTq78M1mLY-|r>;U|T7;PYeiwD#V0F-xxctB;LR&Z;mxHz`E zhZ_{)gzb}AXf*9M-A5QOVeoD`L~qHCt7)gb9B9lOVvQ0rCq}I2z!Ev(raXR%lxGg)r%&j?_^D^*lUEBb!xMBJG z)sXNKKj3^~s2}AAj^TG!MYI=V6J?c-UsKxNJNUCaU0{FvU8Gw-z>M%EO}n>iV(=s0 zCnJ5$ik9i&)?8NS94C8A7lncSv?#Rin(rK4=qIZj0Bh|VTLVTLEjoKz_Acew9^?t; zyB^F$G3!@j&S!NC=|Fq8&BguO+5;Y(WpZ|!8k3yTudS9W@OrAZ=!6eTlZ^~*9rv`> z3FRkn=+D_R6mbt}Uj*)rEVzX*-)m3SX6D&@64)5jVXG>ksB&MDuN@|Y11I_g_YGh=Il{0<8Bwb>%Fo!hG2D~-wCDtTq&8s3uww2xp z*lZi@ClnrG7sZ89_PoDOG>R#Wg^%&%$8Dw-m-q#G|HS<$n$Dt!7oX6O@>_@6`z8v8 z^iFQw673@3k@~`0+b>)Aqgs&VN41Y?{v;P|z0+&XO@)TXVX|sOsl;iiUk{xVy{oOH zK66z~{0Q78qEFn@W@!I%sEWTX@%Q)c_KATF z^u8*MJ&jsL%IPndf>rW(!Cct*&AT2ONQ@t-b@YbV6s-E&H(G1C#@{YTC%Y=41~=|M z5aD2Ar9z%Ax%=oAZ6^=L*{m6qX~+JhYM$cukHWB|yHK&?=-7fraTGSZtnXzImG6&- zun3ZGgSl}@vHfYIw=*sLQIRHmkV9iGZjrweDeXud3p3V!`2Leu!VPo1D%$8HwT|A%E%!(X>EbxQe`%cGP8Zuq+Le~l87@LcRWqeg z)FHp?Hc2*HbU*RT!t|Ucn_U+3o1ti>)B=MK)#EicbdElsB(wkp%4&a&gReDGwBhbh z2CM<+IyC>aue>QULZBe#@>YUs<%A_}soZ%TB*LiPD(_A|JhO@e{6?P;InSasV^wd( zfr`hxNmx-wVXkpikDryI-KW%~5ukmP)QhsqL#ZGfVCKtZxWacI8J_2$e2W=|q(JJd zv!z(lou6hF8L1rlEGI}a>6RX|XXo2Aw$CpPF07;;w`|Y}pe`-JYsUBRYtBQh0D8?U z%L~S|;jzQ+{)GCpAWOS*CyP7|`dZ9JJ@TPT><+y~BjdW#LgQJxly$&^7mz^qt z)4bRB_2$T0gk@Ao3&V6VojlH$Zw{b-aEXQ8bNV!R67I0`g zN*>I-;#!EV3=3^arJ><1`g7fWewajbIq+H1dC(CAFGJ{RXWf|#Eofk%qvd>U<+< zG3#<1u=I)RiKce@8SxUNrWWB>TK59^h~94CKS!1)dh)0jzT%uG!ab1Hg}H-*uh34g z{zc%VL=t;Imw8{3(vUIk_EB6BTigOQZIME;CJbXlY?!w%-U*9U;2d)*2JjptFQfYi zU9@qw#nEPfAZNUOf}UdP9=v$b`&Ab1T;qHdm5cGLhXo5Ol4iJ3mdbcKc5cXH+0V7! zb{9*GVq(NRrg?+Clt~}aEp=fRXvI%HDr+G(ykTwyMnCki$cnIF(nzKF#(zx6Gazay#ETCqg00r(g@W1hB@vSIPRqUo^`b(7@~oVT{p)67e!W z$@00-J{hCd_K5>@20|O+7Vqtd4T_m5qEF#xBA)5u>5)MTdmC7Gp(UQ+j9;HrA zRp0#FQ^Qf7L0WB4!Kqy)^Hw7r7ymmSZni^-rQPi!vE*;9Piu_c7bs%L6zFX_Jk0(C z*Ng}o^$m8m1@vgYb*%mN_|0_De3i!u;~V5AM^-5q^@ay988uXugJhzJo}hhonns(l zsdl21LM6+ve`@U_O?YMf2n)Tpf%yF+3bn*OrIx&HuIPIYQJe zTK+BVAWAaB85P$CVP4ikODh<(R~gmqJSr`wosA*$wxEvNF_#_ldoVvgjFJzjCh z4&E2Xt`Z|x(#rJv1P)cIEzY*0tlFyyOswtrw}Tz26U?eS!5fjp$-N&~D+U8p;Hy{#;Q~tI@Hfv%n>w*lV-w^oVqv+F$*qpKi z6tx$ANmZcY!xj!+Ix3I55mui09|9y(BwJMA{w^)wZKEb~GqABSOoT6Y2TOI{Tg9YTt<8gZR@DTtzylM>E34)-E^liEdCYc zfgWmg`&O&hh01$)JCZwoYyqewPJq(t5q-@Iu%JtVH<^d@rhjJ3q%-H$Qg$~xv1U&t z!HCcJTDq?GR&wE{)JDYMBXgpMTlq+@*CqmGMBeF#NSMZc?RzoxT>=@pO<-*~^d!#U zWAnXd&kJ5}q*4wS*||oz=ZcGDCK|t9quYY$%Zhodv01>=pYeKFQ<0>M=|sj8o7jhZvA?HYJ4L>z2x96Ny@pNNm!a&DMSk`PnOvP%Jx@!yN?_TJVmu6q@Jk zPVbW^#l^+2aAGB(p&bJ3ah$`lLnpES`DM&w5NNcglX}EgFf= zPYSlPm}8xNLlfqVk!#*!DxVZZni`?tKI#g=LbBN@lD|9LW!BO^ldFXS5fb~te>02mTn^|po3qaXN|VL_{fHONidRN zn)y>!RXV4B#8IHU4;dI>kR>Fz6*K0#+JV!Rcz-)~;C*pqp+kD<$9H5SSIs}?K=&MSf>wbU1YFv8|SXjOkUNomqJ&5!l2l z?u%L<5V>WPHy*k1<6hr`c1?FP_8q-1$zQ6cXHqbc*5;lQ+f}(L7KVpVvgTIa5`9{d zHIAAs-=OMWm6B^ARtjZdM5ztrO~LJ+dv6~e$4&Tv<q9+)q*eEK?I6xy@{loQCaYxLtY0V-9CON^@{SBzory%^%nPS@jy&6IRX9@8mecm3C9?5oYq z;>;sxHBPQ%QJ%?vw2BK;N;#+JeDeAS71=D{s@yNz%9V-(k4f?CCDyG(%Z1Rki!c%k zWdRcO7q2q%K0hOLPAb_UrB1}fPI+2{$w9)8jfScV6X#3zB8M2wLzwe=B&Ln&J8zYT z-cHswel)N|4QI&8!Q^3Qy)^l>`F2JOC8{OmTZvdad$^{#xhchZ?ib!~k`5t!a9u04 zzzn8vJgV1PUPi0U@>6qtozErL+%=n+Ekv1sGiw)j303>1Oh6}6`47w9bCKJ=?#d2A zxi|ZQ8|rNR>!}hEx_%P9e*V1v=i%oEVgHH)|NCPq_#Zu|dKykAOgCLWr!EXxCqH7k zWmX4#{#`iA+m^<*T&<9M7)7DW&Q7P`-5~3Mfa9f5F%ojYa?`35C6S#+ws=5GE|6m> zMDCkFfHOf^X;OFwdror{jRaYoEPKr`W4|tkdpMgx&D&qs&$;9?_ zwmAA%t3Kzl2(B4_qbP>e(vI*U=Y|x~;h~mVE89c<6*(i-s=J3@-&@tuls0Zm!J#q^ zW2mhRkcoE+G0>rN*Lr7~{jhiNMF%8v-}tyzhi8SNu~SBc)_|rTS!4?J>Wn5uY{t*q ze{9b0h*xKLOVmxjteS5-+q0<^o$|cX7ir6;=g3(AJ|z&NA{Esip3T`L#3nYO5ZRff zbX{A$*gUdx>GLgkJkyQ(VR@+8>fU$P^ z)HSq($GtuRkKXC&r&V9MZ+Xnukxf!R^?XFEUeBaKIGHr~z~{rG97z&VUrqk*sm!!J z>1V{GbC?RP4__Bv)QKo+$FB`*e+a`yBGsa;|D1+IV=c`NeF~ha=k_u4!H3H+7LyM> z9NA3A(@0PL@>#Ns8!6BaS&mG9;luYWsX7+ZT|?7kg52m3qq^RaCR|m*qp)m^d(`OW z%qLzdCrN80w}p}(%<_ytVywx1i7@oc`5qiiHeh_2o^<#mzO>2kGD-h*fy<3puq`~w zvGdC@{|VL|pCnHEg=&tcT_~X+$E@qWswFQ>Ug$c9koAI7#UJLdze=W#CufCW09irx z?@G~_Y(HoELa~Oo<(#$GkjKhkz(?)TRHLNaJeh&GP{>tAuEE>e&v8<}9J)q5SRzPc zf^SXMY~!igFIn)r??L$#ydSC8RrJy@*-z8rw@mBbZa=_W)llv79m5%It;mhR1 z&GH4>tQvlsdrZID)^V)KxRJu#a6awHHd zsP#WJBRua`kG%r8|dh;+MfLi?-p{Z)ZfHj+)LTi2;Y{%Pi zvo>#u4dW$|Us!T+B~7HOz9y^pOPnbdSSTDy({5N2#*XnxAVh@T?9SUVT-}UKno?%^ z@;w%x`jVQHHOzryLM}@j9RHTe;5W*C-O5DYXPaouLI}!djIw!1(%_704vS_UhYPx! zvzNCr`_Q4@wOwA@pR^5DUp!q>Mp5`|X^3k|PHVDGzksnT5`&$S5VSXvU)(Sa+Z_`_GDh%SC z7nCz6QMi6X`7>n~EZnE|R}I{=EL@;rVclwp+KbSav$Rq4R8<3hqP(Q@2_5k4rn#86 z<J%b^(l_#KXZ=cX%twCG%w($*zq{28}$Fa!2Ndwy_{Fmyi;SqG4e z<9pw|6ei)WHQ%*KSkN!374(#TJ)K{i&c78S16=B%7M&k1G)&U#kT7v(Z>qAobZ%xj ze88#;33AREkn-43z&Y(d@%}LSNoff| zTgmg2z;uWep=c1UleFyPBEy`-w~Ef~c7t)DR6JMd1v?b88!|In`<;oB=|gb-ve#dB zgS4W3BL2-bxLNeCjRUZdAnzZ>0qf?dP zCl5yugMU&ZfN-D;;vSLT9dK=#Xk#Oy{xDVkA67@;kFx)&&W)w?dws5}{1f0uv;`p^ zz>R#|0YDX)wL8EV`?|W?*x;XkrT_#dPee<(e{a#B9DXs7fp|b1;kJKp`Xxd&s0YLv zkpkf6{-audh~%$20JXtjY%utm0H`g5E%Y-WfPK@F--LL5|FhQrG{-g1Upb^9?$GQ0 z0?Hd`YDnE@SA;rxK|Nqr5KawCN0_T8^rkmuq3%|0Fc%NF8vvml*A=?ap6iT=?uNO! zd&t;9+yFe>Kvl@EFqoSgXaKYJuyZ%Y<`xh{Wcp9vpDEYBhzt8aQT!J7D_!75XuriH zIP>vco4APYKj3jqdvk%VbNtNtM;!Mr-q-(vJUlLVW*$+^*&R`^C?Ht$6~7zPpb7LnizPjlGuK4JD#ae^DVQu0z+U z*C{_sMa29c$n7_M|5JMv47H66b^nsv-$iz0Dza;pxK@Dc>$>{a4ZaRv z|0Av&75PJr{!*%+3ie0*FWO(t2VsLjh&kv+E(qEDA=^LY^qXX__3S$Sn$aK91>MN@ z5BdL@>zAa3czJJfTueRG#akyejg7v z`4F_%t+?TN%@=X~`TegN_6IeB^1ssj;_^SF^9l0)rb__spY!H_8G1LVzsBCpO!ntk zz1FBdZ~i`zWnnfpP{dM*So@5zd4zzjo^Zs*FU;1?1F5UT-@icFTFV zv4K+VR@dt^A{MdeLR=J~*H!y@dtKOd+I3cJpb}zHf>}v9+d3kacWj`J2h>R)F|!L` z1Jz*e?ua?;X6C+8YoOsTHhern2(E}}9xjz!KAR${@pC7hn;R@7F8=49dzKzdQ|CTeU~F8k4$MQf7&qo_2}P^z z%mk&QcaN7OR0~Of1PKL|UJ_F=k^?I&F7pmRx{Cpo2vzE~iJ`28iLoOm3E?As6{q@! zvMjEQXO(9!BJ|u7Kh*|lyz8(hDIz|!RVQPo2;$*dVerfajKAD0C1U%W=7eW14A!+nVd+JHdgIymO8s&b{8UH zu`lJ`mt(%MhwNMtWvkB%+Y8K^%3Y>*8S;g`t$maB!+M3m*8)!M?AoG^u2HoeQ?T7L ziU;Zp*$NSVoUzrVv;T6iL(ekZF>638RslZy_!(ENWexqvpzS2hl`rY*kmgr>0m~Mz zWExIQ>cnp0J+&E9=|i&Axy7ZKT8Pah=!Xx9*qs$nHV>!27p*^^K*($gRasQ1Px=aO zmCUe&gs_0W)2E)@^xIex9o;e)m!4RwVR?2rJQD{G7Nxa)!@xsv==~kq^c>A*Ntwyz zDII2lx@C5Q4R)ou=q;+R^h`gM6&s6`*AF>zmZE%i5>-A5`>}!*rLhp5ac99{`p`ZZ zuSCH6`-uTFZ7Ru|PU#bcnUs!Xs+U(xQJzClW03&L$$o*=%RAF)vw7ke-{5U5T8Fs@OvE>&aD!Ucz7eiKiI58#xwAd5n!c9D` zWN_CNo*iZE3B;E1Ybqlhw!13UkNN?@)mvh)v%+aBxkUx-ck$#g) zuzNKmlOUvZG%n|KruW=g-V{Il*|zX>jh`?dA77BqsJs|hvlmNc8837D#umGMJEh)< zc*r0YIIJIeXDb^+IXR_pQI72G+Lw{M#Eamv2;Xetw&n5EbCOMKUSQ~u)46c;Ai z6;DFVn_OP0#8MN}Otr(gJ9=^odghWT+NA^9)KLbqYc|Wa>)aquu-<@vg_bSqU6PF_ z-(a7tZT515x_Du{(?bToO)ifQ_uH&|ZbOAdo zD=S1Hb^J*llH{2KAQp=8QxnZ#N;eOolcShgDVsovA4g~ru3f3-%6xfKCP22QSwpk3 z&=Z$koiY~I3hh)pW$#E)dXZG80RfnrCSEb_3K}T^YK@RlUl?y6x4p6_`ba1e?x}RZ zC}uZdTftTjjdcocqPP5LA3Oes*+BysUrw-YAMa|$J~|4?WYDWc{uYLg1XR}Goyf+A z-1l?G0ciS|X2CFyh(LML397+?0sC?%=(eG%ZLGc`j(hCNLaUueb4#XwGvHWLIsD}* zytH~|J(_cDuR4GFkf(v-&g|3E(AkX?ld`wi6)tm=MxX6US(`_s*IMjMB(=HfR?>J2 zKWl@m7#kTd{KbZd?06(T!0-2QM+O%xMPn!5tHNc=DJd<<9n%l|>Jz(f`ixe1peE#y zhLU0QPVJr+I@{uK;iR792sg-6Cy0h*6>ssjX>y=& znS21z*F~@I`9(ol7mcmC1b(?fAN~8{0#vc43=5lulSAjFY!F*nCY?lCX-YKTSM#{+ zyWG3f+Jgtn^9L}Rw~k485`SzRhd=g5A6e8RrVl29i%#W)E7MA*2b>=S&!d{^L2_(~f+D=NPs;tup3YJ*I`&5p@+20VT#LRd>re@RVpYmL|YN$q?GM z7X(hEoLxU&y-1q!*}|l}Lf_mevO4IlasDDhcj47GviQ|;ZM?mUPT?4iqR@!$Uu`#zc|x`XzBJ#iz6ym1(AGrn zcKWOJRI`ZAu{RssduwF^Be=M&_H^HM>!q$&H8T&7*j-L`jl4lZEcBeZ{DX)@yT=`B zHqg?+QT)S2?yvpJsXFqwm6fRb647^F=U+o1|GK9GzP5G$iLLnGpA~NmMG(T)Lp+8F z@c(Wl@*~W2g#GuA3`L&*W+#IA|C62gr)ek!lt!3`vOqbY0#FgCgfJAH+Wnv<3gg3cP_gezO99dpiE-Rv?&1faiBBP{%=4$ADTQ^=OX2l1!ypxM#Ff z^ogz{p>NZP^d1uSI=>Zj2)kykZVrQ|BO4eb#w;A6>`yu~f}54|(9R-J&6=wFSXcAT zvnGPtJNpe+Fm)v_E25YDs;Yy zxSJ@}_ki2co!0ZS?^2nxAyYTokN*BHZs3cF4)W)ky!ib>Tx|57K_g$s2|{J0i-7gc zwdCn_?vAIC)qD3(Ra-BIVgln!`ZBYs2rPg-MWUO`Pwvg9I5t{4bBz^4m&rE@N3VWd zHI806#M~YmHm|l>%sUBt!!($fU{J2AX53&DJEF^r*8`APjz!kIjV+H(@;KTK9b0D6 zjye4i!>HpMdUz3TLVokQDCM$clj)2cK~StmEKzJI?MpFv>-)9vmEZ$5U-tL=ZZC91 z>Z(!dbLds5si)9_E!pvwJ6T5p)NwSdQ2p%QbjiFJLEl0+B{HayhA&V9Nkh=JCyDVW zs{%oicqdvKdl@+aA0=o{!;t(}6jfwYx=YMmSlX?=rhO+C_(=hg$JIr&&2pM_9FGWYSH z4srJ>l4Raq)JYirAQ=30U5pa<*oTr`viV6?)~(PGCm0H_maeUtOn=co8{v9lnk}%( zS2&9Y&!f(GuJj59m{ornoPsVX%z^fiJ+fka^cExnyn=E!l$H2-hiYWog+R3Lcnaa- zNOON8!-$Jmv=4^EED!B47NGm3{p;PWCaq(V(1*eAAEf)atF0};Ut~5wj?pKo`v&|; zI?SW;<303^s8>9RDqb475g3Y8cY6{(4-FTOu;V7D?vLlr(xhrBz;S@^@&s;u|?0&2760Abdc(ZIP(LD zWC02`CsODKX&F0Crw}9iJ2jxmhdJTGFYlWY(baumXsJTwLsEJrj&ZEnGIhEduB+%c z)zP|B>tF$p$BI*EkxN_nx_X~8vLM6TGZvpiUlVRX5Rm$9Z+vx!gOmNE@)NTJhJ%kM zS}!^qbaIBQSu|pZ;aM*scES<#Zb_;c{q;_dDb@v* z`BG}rmFh%H<>s3C7xH(r<>V@Gu2zZ%e%SguxpNFYN9bdi_K{cxY^6^hpv!~AebB#Z zxzki9V%b6G=4_wP#3_=>BxACprhQwxjVjfV8Q~$Uvd4Iq32imeeHHiNx z+xhF8*!_>3+d|)|UZ0&P66v@2&wOB5F5f2VLG!O)^4X{v8<2Kyc9eCj$jp=exZ5-UHJGN-rwTW`V6cr1k33+Yqo@@;#f%K}`W3k0;f~Du5k3Kb~q?a|BD-DovzX&Addi&+3l$+4cGJe4;uD^j$Kd~056U+*JUAjBskOboQU$7SsJ2xl-gYkv~ zJ%OIi)=)QhE4UjJ=mqpfz%sr-KcFAf4gUMO%zbT*{D#il-2eYZXL$Mf1b$za4X|`c z3_evhZj=(;4^xkd^t#K+P>aP1P(hutHrKnYYpn;9l)cTMWRk#2;Atrv0}g4*d5ab$ zpP$o&nt;hb7~f;V0!xmPADa2vwwmpWrf#z;u_j?V9JJ6;R%-Ba=WOTI{6%Ht7^Om# zEW`H0r0BM!89t?`u4Ga;!&33nFU5}qmflH(jH3|+rsF^Ic%!ILX30iw-S>d1!{D^q zl7WdVD)ZG#qqnkLSz@+Nzvq>2g=F%bib~M#FBe){ zL)o>t-DM_N_2DxXl*wt$i{`+~D^)EL(&gmlcOnj2UYYOx=BZ!fT{a_8k*}exvYGa7ws-p0k`~SMxUiMT(b3@Z)O$~tOxv$pOD!EvDJ#uWIH{?I zI!P3y^3B?-x`KS6k8@^TJkw=_O37)}y|5cdc${maqr%E=e~&N1NZwcHlP*U?WNq#e zE8Refk@^p9uOzw^jiEwhRt$UaiXxh}y6$bhSnQ%z9r`35QsrjNXGtuD3L82&B~eL8 zP(`H@?-xo*k?E=wIy$Vx_G~@cUrG{_`1!Kjib;~VNL54RU|KjYq`xNERkCV)v(DUX zBK?9Nd#2{d@sw!o$yq~4eWOFx#A%rqKgR=h2)~-&1 zDhKIr&&IK_KIQIr5`9 z;2Q6Wn9H+x{>yE374r`(1r`*S4+P)?-!SHC;*_?1_0(ppb5Sam*1hUb{&8kI{INkz>gB;}HKA00@f{rVH%pX8k9OUwDUj1L z*2j;&WT-C(RZ1$cmMGSUOW5kH9u->a+}inKL9om-CNPlh;~m@NV<05tTE|@1yONe%y&p*W*%c352}bZ7ki8DGm3({J`D5M(i8w*O;;vt zmgu-ApI2*pm@?@b??(=zvb5rFh1uLaj!vuYc{28n@RPh@vAulV``O5dsrR=}a>?Jv zO5=(|%#pQ1hgMbP4ErbvmX=jTEa-1{odzS-olZY`R=mREj(_h+p)RD1rcDncYJ`(s zTHrLMAm*hD^8^aZIy;z;DxDBV2SXCod4Y%EEu`7Rem9h1f+?apD|-BMVhX=B1az#@ zjqLc4C5)@uJ8}y-VC3~QpQ6jHg5@C1$0zs=As?tcSDavKIja~^>_IvuSk@=E+NGq2 zg&JX+JsNsZ7%ZJalp#{c+NnC;qk{uX6@1S7hY~BFbQIgj3-Q!R1c2QgWDR8-ptwyiFaGzG*AinOwg#* zsE1|bo30a&puF16K4+j)c|NPms{J@z*Ag?t>}hu8xM~E$oLR{fU*5uC5+&S-;8f8M z&UV)HZVw6Rz2YgtF{C*l^Bz)nhWEp%&LeK^GgG-~<;Ju(IUhGu9#oI**+xH9rQp5n zC0{5cdd+AK(zAaoPr_ytI}c8gn>d9yyiOxn{@%1?a5)b#CDIZ*wqTza><4Ml?@oR* z)smxC=6f1ry!nb@Wnolw>MTNB_?s)~rs6KbrI`>E^Tx$ZE4@EH%^Cg*wcHofjrM+T|4PY9x!0u6QS@}B^0n@OQ5u1lzoALwWIbo0 zo?AyibR1LuLsKBJXW0oB8#pM-BK(1#{Uc82PpS`XjFBn7aZAhBzr}`t9k;^8W^tyY z3o=gHl>D1|6rTgZT*?cqEybj;8+N)O@bPHz7a%bR#-Kv*(>rj9>c>6_wd(3y-IV0}G z=Y=)=OgJKx<^8tL$AG@A^L$avNyHXa)s*IQhmtr#Y@ZWA++rB2NE6u^2i6a z6&YQD@Y1p-J>VJds_YKuH>S_8%iMrZI6Jas?oVU8yG>Y^2LkbHg74XWbvA!NEzC+M z>f)oZB6XzExWm|Mj+yNW3O-N5UKV}&*0YUZTzcE?hN!y=P(M_Lg51Jb9i3nU7qUUweI4c2xiuDCo#!Z8^xd5g)u97L#3qh0!pTZ>#Mn7l^b zWZ5d&@Gj%6VcpVsdct(oF|zmLhF|V6vf=Zd*t30VCMhH%DZKlI;ag{Ah}f3&>fWdB zY-%}{(UJg#*MhFgBcnhrnRp}kK{j7NILS9*pZ);1FWq%NipT6jG<*|F`RjU(!iq)1 zRXcHUg{K#?w3~TMm)qDzF>1Upedk-+)_@6Q=E=%PF zBQ+qqBxeox<4nz7_5v91;*Yn>0@z|2{Xi7 z8LKlqo^SqcJ7rgdV`v*zn{; z+b3Jbl+JYCs?&H&=>%DGcJs<2%HEs*IPK%}$bJOF z`Mi%y(auyY2+u=1v%umpd^t1Z)bEBt-|J$7a|aV9+4AW}py0eSW7dE%k-!|Zpj(2O zS(l5yQ(K`tW|n3!w2~{{fMtAjMp`1TEZHD^(h)s_8OV36RN*+uoS_k9^N|*t*IwcH zX?E+m=TNRZ>L~}9yibv5FZ{N1&LbEg7yDEoSZ=YP?4!WLoxAQE4KtDj2SO<~kef zNH^=br?iVOgz_1`EyX}|VsVtbNDbp%n(PKzVH+w9(t}gw3UNuO^{F&@WTZfb3xyuK z1Ke61~u-`9fzksmEWxG&UF`~U4dF;FiPMs;&yUi-^29KX%V?>ku()atS@&9PvW?Ol zX;}@K2RoSv7t6Yk**2CI6T-2Imb8S#-f;v}xojwiX!b{N(-nEFnLj3AID)Btlxa3f z4VL93uXFa(b$>xoh$+spbtKS$g)yC!j!{`1@J9B#ZA54s_o#OPTM9@O9@(}W-oMr{wPs`9X!XDOPxZKsa(%!viKn_@&G*8IH z!QF)WywnVdZ&|-zOq;}Wo>MBlzjCkFuH3gJQCq|V#9tY(L{t~Oiac5B)6bMkEMqMIiucWa)S6Gwjob*{Z(-3ig{+93Ey zPWQN@+SnxcgAnFLH%kJ*b%8_`!) zi)BwPJb^o^m*0F;)D*YeS z;@6ns5z-PmScQIA_5x43U9w#{O?IZeze9|3F4;;Cq&uMEP7r_ieWZ80xNLn*Kwof5 zL1EgsXX5-aKC^EnaxAHPv(%rifPlE)ao^)s(M5up$W^_`=V^}vN2g7aw5A-q42whW z+3F$usavLQ(D(Zn3WHpxLS9rgG!si=DWukn?Vz@^!~{o0Q; znKsm~WOC;__wuy2u*aUb0P=Xt{4XZJ1UxN~1gk)^P|~!| z;=MXniE{?!DF)J+sFgSn>Mx(nqc*xjrc_zXl&uKPq4e}}w1t`wFUoG+4cqF3;exv!v#tXv)2J0paJ zV7k)-bg>BpHM5t@eNRvoj=n#J`nj^oaGCC9m&4*g87JpNRbzi))t+fZa5$!I@t)$D zFXX#ez;|zq-f-T?-G@b9qdoLZCnhEsl{1j?i%D|U@hBrMGv~GgovB;McTxS&wxf;{ zHf4q}L(8I)(fE7b%JAZF&%KYG?=J$W ziIi34n~`~-KGjw+dqSzVB(Duzop_cInYZ;Vw*Ps!m~B-q*Adgy7z>H+CNbDw@#tNb ze5c^;#b!*A^GFo)IHh&|ZOm2Ig{K`@!B%)axDP3!`iUc*2=`NSqCX^^958(|mZ@Hk zGL-vzfp+HtGZ=G~!38tCl>ZX0zHk+Qy=cZ}`ZngNA$&YZ5d(q{Tl?kE=mJv*Bieb`+{X=SeF(#WvWon?Uu7 z?{S)1_b>=251?m95QjdxAiK2s^gcPqv+OKmFUR@kK#8(Ag3kL`Tt+>!QmOj8k#iIo z+nI?2%2@`sh0cn6QD(k%SoNQSHsi0JobJS{*BdXCj9l%9j70E^lberTSx=F}{f+UG zXK$-39$}rYyk@?S=^Qvcr8G#f84ZUWUcC#R!EQglElX>7EOa4j%$IBR@~OIa$x|-5 z3l!stjL0#AV6Y(HpXigQgb%_G2?5&yETOhAXEB!D z*4Hcmn6(&-0iPO3%|!-k2UGNOgX;LH>st9aSP5CPNQh&LNO-Plkv)F%~-y4;Nt| z(A(Ra%bSM_?q&-F3keAULEJ!YZcYRRr@ODS2gHZd+5Ik}yqk)^4FAmL?9O#lCoY7~ z77%6#1apCae-!iwREu~83*fq7h~@RGQWzM1aY4LALoXDGwpc|6CrT2Y%IC6hR}bhH$yH@s&mR zsf%-ixOq51f}CJMT@YB97c9)f#|aV;27yF@f1^b779y(*;{7a$_qF_ktiMtImKE-% zi|9jfTQ|6k4ZsTlrCy5;(L`=8-k&AjWcx)W3cMETZ;k$kVt}})sr}D_aB{jMh!3YF!ds3P0^%3sw-NfM zJz{P3XFXgz-5hU}&)NzIb%b6Q>5k|WFrp&XR>C%LHz$Y(Lj7G_5Ke|SFZBT;bc01) z6p`owL*V7&H>xe==|I+9G9;3fzBZMD-7>oDyT=Q=p0l!Ule~d5I|1!Mp zAzU=C)f%CS*NV+5D||gFK!RXF5SSNyGay(%AQl7}V&MEQ6u;D$^*<^2J#q102NrzX zpf(7%Ty7rhYt8!k0U+EAc=!M|fM0R^Jp2fE-0Kg(`BxlRP=E(XZ7h$A9@ zivxiWt^ofU2LcNsWb&_ZJVMt_w*MN3@J0T6Uc|8kgk$vI==g=e2&eLY$%{ahx&NJx zj~j8!;9uxKh@&!yEs}qYQ|oVZJVHGGR%bpTLBvkl-}xcDIQ|wV$o+5S zfhtn|PWCR8HWTj;heJ?K{CBP>oB?OY?mKKze6#xl<