|  | // Copyright 2021 The Go Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style | 
|  | // license that can be found in the LICENSE file. | 
|  |  | 
|  | package runtime_test | 
|  |  | 
|  | import ( | 
|  | . "runtime" | 
|  | "testing" | 
|  | ) | 
|  |  | 
|  | // Check that the partial order in lockPartialOrder fits within the total order | 
|  | // determined by the order of the lockRank constants. | 
|  | func TestLockRankPartialOrder(t *testing.T) { | 
|  | for r, list := range LockPartialOrder { | 
|  | rank := LockRank(r) | 
|  | for _, e := range list { | 
|  | entry := LockRank(e) | 
|  | if entry > rank { | 
|  | t.Errorf("lockPartialOrder row %v entry %v is inconsistent with total lock ranking order", rank, entry) | 
|  | } | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | // Verify that partial order lists are kept sorted. This is a purely cosemetic | 
|  | // check to make manual reviews simpler. It does not affect correctness, unlike | 
|  | // the above test. | 
|  | func TestLockRankPartialOrderSortedEntries(t *testing.T) { | 
|  | for r, list := range LockPartialOrder { | 
|  | rank := LockRank(r) | 
|  | var prev LockRank | 
|  | for _, e := range list { | 
|  | entry := LockRank(e) | 
|  | if entry <= prev { | 
|  | t.Errorf("Partial order for rank %v out of order: %v <= %v in %v", rank, entry, prev, list) | 
|  | } | 
|  | prev = entry | 
|  | } | 
|  | } | 
|  | } |