|
16 | 16 | #include <vector> |
17 | 17 |
|
18 | 18 | #include "eckit/config/LocalConfiguration.h" |
| 19 | +#include "eckit/io/FileHandle.h" |
19 | 20 | #include "eckit/io/MemoryHandle.h" |
20 | 21 | #include "eckit/message/Message.h" |
21 | 22 | #include "eckit/message/Reader.h" |
@@ -454,6 +455,93 @@ CASE("test codessplitter unstr_latlot.tmpl String") { |
454 | 455 | } |
455 | 456 | } |
456 | 457 |
|
| 458 | +CASE("test levelist String") { |
| 459 | + eckit::FileHandle f("pl.grib"); |
| 460 | + |
| 461 | + eckit::message::Reader reader(f); |
| 462 | + eckit::message::Message msg; |
| 463 | + |
| 464 | + std::vector<std::string> expect{"0", "0.02", "0.2", "2", "20", "200"}; |
| 465 | + for (size_t i = 0; i < expect.size(); ++i) { |
| 466 | + msg = reader.next(); |
| 467 | + EXPECT(msg); |
| 468 | + |
| 469 | + MetadataSetter md; |
| 470 | + eckit::message::TypedSetter<MetadataSetter> gatherer{md}; |
| 471 | + eckit::message::GetMetadataOptions mdOpts{}; |
| 472 | + mdOpts.valueRepresentation = eckit::message::ValueRepresentation::String; |
| 473 | + msg.getMetadata(gatherer, mdOpts); |
| 474 | + { MD_EXPECT_STRING(md, "levelist", expect[i]); } |
| 475 | + } |
| 476 | + msg = reader.next(); |
| 477 | + EXPECT(!msg); |
| 478 | +} |
| 479 | + |
| 480 | +CASE("test levelist Native") { |
| 481 | + eckit::FileHandle f("pl.grib"); |
| 482 | + |
| 483 | + eckit::message::Reader reader(f); |
| 484 | + eckit::message::Message msg; |
| 485 | + |
| 486 | + std::vector<double> expect{0, 0.02, 0.2, 2, 20, 200}; |
| 487 | + for (size_t i = 0; i < expect.size(); ++i) { |
| 488 | + msg = reader.next(); |
| 489 | + EXPECT(msg); |
| 490 | + |
| 491 | + MetadataSetter md; |
| 492 | + eckit::message::TypedSetter<MetadataSetter> gatherer{md}; |
| 493 | + eckit::message::GetMetadataOptions mdOpts{}; |
| 494 | + mdOpts.valueRepresentation = eckit::message::ValueRepresentation::Native; |
| 495 | + msg.getMetadata(gatherer, mdOpts); |
| 496 | + { MD_EXPECT_DOUBLE(md, "levelist", expect[i]); } |
| 497 | + } |
| 498 | + msg = reader.next(); |
| 499 | + EXPECT(!msg); |
| 500 | +} |
| 501 | + |
| 502 | +CASE("test levelist String") { |
| 503 | + eckit::FileHandle f("sol.grib"); |
| 504 | + |
| 505 | + eckit::message::Reader reader(f); |
| 506 | + eckit::message::Message msg; |
| 507 | + |
| 508 | + std::vector<std::string> expect{"0.02", "0.2", "2", "20"}; |
| 509 | + for (size_t i = 0; i < expect.size(); ++i) { |
| 510 | + msg = reader.next(); |
| 511 | + EXPECT(msg); |
| 512 | + |
| 513 | + MetadataSetter md; |
| 514 | + eckit::message::TypedSetter<MetadataSetter> gatherer{md}; |
| 515 | + eckit::message::GetMetadataOptions mdOpts{}; |
| 516 | + mdOpts.valueRepresentation = eckit::message::ValueRepresentation::String; |
| 517 | + msg.getMetadata(gatherer, mdOpts); |
| 518 | + { MD_EXPECT_STRING(md, "levelist", expect[i]); } |
| 519 | + } |
| 520 | + msg = reader.next(); |
| 521 | + EXPECT(!msg); |
| 522 | +} |
| 523 | + |
| 524 | +CASE("test levelist Native") { |
| 525 | + eckit::FileHandle f("sol.grib"); |
| 526 | + |
| 527 | + eckit::message::Reader reader(f); |
| 528 | + eckit::message::Message msg; |
| 529 | + |
| 530 | + std::vector<double> expect{0.02, 0.2, 2, 20}; |
| 531 | + for (size_t i = 0; i < expect.size(); ++i) { |
| 532 | + msg = reader.next(); |
| 533 | + EXPECT(msg); |
| 534 | + |
| 535 | + MetadataSetter md; |
| 536 | + eckit::message::TypedSetter<MetadataSetter> gatherer{md}; |
| 537 | + eckit::message::GetMetadataOptions mdOpts{}; |
| 538 | + mdOpts.valueRepresentation = eckit::message::ValueRepresentation::Native; |
| 539 | + msg.getMetadata(gatherer, mdOpts); |
| 540 | + { MD_EXPECT_DOUBLE(md, "levelist", expect[i]); } |
| 541 | + } |
| 542 | + msg = reader.next(); |
| 543 | + EXPECT(!msg); |
| 544 | +} |
457 | 545 |
|
458 | 546 | //---------------------------------------------------------------------------------------------------------------------- |
459 | 547 |
|
|
0 commit comments