github.com/deroproject/derosuite@v2.1.6-1.0.20200307070847-0f2e589c7a2b+incompatible/blockchain/scores_test.go (about)

     1  // Copyright 2017-2018 DERO Project. All rights reserved.
     2  // Use of this source code in any form is governed by RESEARCH license.
     3  // license can be found in the LICENSE file.
     4  // GPG: 0F39 E425 8C65 3947 702A  8234 08B2 0360 A03A 9DE8
     5  //
     6  //
     7  // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
     8  // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     9  // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
    10  // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    11  // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    12  // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    13  // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
    14  // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
    15  // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    16  
    17  package blockchain
    18  
    19  import "testing"
    20  import "math/big"
    21  
    22  import "github.com/deroproject/derosuite/crypto"
    23  
    24  func Test_Scores_Sorting(t *testing.T) {
    25  
    26  	tips_scores := []BlockScore{
    27  		{
    28  			BLID:                  crypto.HashHexToHash("0000000000000000000000000000000000000000000000000000000000000000"),
    29  			Height:                76,
    30  			Cumulative_Difficulty: new(big.Int).SetUint64(95),
    31  		},
    32  		{
    33  			BLID:                  crypto.HashHexToHash("0000000000000000000000000000000000000000000000000000000000000099"),
    34  			Height:                7,
    35  			Cumulative_Difficulty: new(big.Int).SetUint64(99),
    36  		},
    37  		{
    38  			BLID:                  crypto.HashHexToHash("0000000000000000000000000000000000000000000000000000000000000011"),
    39  			Height:                45,
    40  			Cumulative_Difficulty: new(big.Int).SetUint64(99),
    41  		},
    42  	}
    43  
    44  	sort_descending_by_cumulative_difficulty(tips_scores)
    45  
    46  	if tips_scores[0].BLID != crypto.HashHexToHash("0000000000000000000000000000000000000000000000000000000000000011") {
    47  		t.Fatalf("core sorting test failed")
    48  	}
    49  	if tips_scores[1].BLID != crypto.HashHexToHash("0000000000000000000000000000000000000000000000000000000000000099") {
    50  		t.Fatalf("core sorting test 2 failed")
    51  	}
    52  
    53  	sort_ascending_by_height(tips_scores)
    54  
    55  	if tips_scores[0].BLID != crypto.HashHexToHash("0000000000000000000000000000000000000000000000000000000000000099") {
    56  		t.Fatalf("core sorting test by height failed")
    57  	}
    58  	if tips_scores[1].BLID != crypto.HashHexToHash("0000000000000000000000000000000000000000000000000000000000000011") {
    59  		t.Fatalf("core sorting test 2 by height failed")
    60  	}
    61  }