LCOV - code coverage report
Current view: top level - shared_model/backend/protobuf/impl - proposal.cpp (source / functions) Hit Total Coverage
Test: coverage_cleared.info Lines: 13 16 81.2 %
Date: 2018-12-05 17:11:35 Functions: 23 25 92.0 %

          Line data    Source code
       1             : /**
       2             :  * Copyright Soramitsu Co., Ltd. All Rights Reserved.
       3             :  * SPDX-License-Identifier: Apache-2.0
       4             :  */
       5             : 
       6             : #include "backend/protobuf/proposal.hpp"
       7             : 
       8             : #include "backend/protobuf/transaction.hpp"
       9             : #include "backend/protobuf/util.hpp"
      10             : 
      11             : namespace shared_model {
      12             :   namespace proto {
      13             :     using namespace interface::types;
      14             : 
      15             :     struct Proposal::Impl {
      16             :       explicit Impl(TransportType &&ref) : proto_(std::move(ref)) {}
      17             : 
      18             :       explicit Impl(const TransportType &ref) : proto_(ref) {}
      19             : 
      20             :       TransportType proto_;
      21             : 
      22             :       const std::vector<proto::Transaction> transactions_{[this] {
      23        4225 :         return std::vector<proto::Transaction>(
      24        4225 :             proto_.mutable_transactions()->begin(),
      25        4225 :             proto_.mutable_transactions()->end());
      26             :       }()};
      27             : 
      28             :       interface::types::BlobType blob_{[this] { return makeBlob(proto_); }()};
      29             : 
      30        3446 :       const interface::types::HashType hash_{
      31             :           [this] { return crypto::DefaultHashProvider::makeHash(blob_); }()};
      32             :     };
      33             : 
      34             :     Proposal::Proposal(Proposal &&o) noexcept = default;
      35             : 
      36             :     Proposal::Proposal(const TransportType &ref) {
      37        3446 :       impl_ = std::make_unique<Proposal::Impl>(ref);
      38        3446 :     }
      39             : 
      40             :     Proposal::Proposal(TransportType &&ref) {
      41         779 :       impl_ = std::make_unique<Proposal::Impl>(std::move(ref));
      42         779 :     }
      43             : 
      44             :     TransactionsCollectionType Proposal::transactions() const {
      45        5802 :       return impl_->transactions_;
      46             :     }
      47             : 
      48             :     TimestampType Proposal::createdTime() const {
      49        2856 :       return impl_->proto_.created_time();
      50             :     }
      51             : 
      52             :     HeightType Proposal::height() const {
      53        5848 :       return impl_->proto_.height();
      54             :     }
      55             : 
      56             :     const interface::types::BlobType &Proposal::blob() const {
      57           0 :       return impl_->blob_;
      58             :     }
      59             : 
      60             :     const Proposal::TransportType &Proposal::getTransport() const {
      61        1427 :       return impl_->proto_;
      62             :     }
      63             : 
      64             :     Proposal::ModelType *Proposal::clone() const {
      65          15 :       return new Proposal(impl_->proto_);
      66           0 :     }
      67             : 
      68             :     const interface::types::HashType &Proposal::hash() const {
      69           0 :       return impl_->hash_;
      70             :     }
      71             : 
      72             :     Proposal::~Proposal() = default;
      73             : 
      74             :   }  // namespace proto
      75             : }  // namespace shared_model

Generated by: LCOV version 1.13