public void TestCopyTo() { var jArray = new JArray { alice, bob }; JObject[] jObjects1 = new JObject[2]; jArray.CopyTo(jObjects1, 0); var jAlice1 = jObjects1[0]; var jBob1 = jObjects1[1]; Assert.AreEqual(alice, jAlice1); Assert.AreEqual(bob, jBob1); JObject[] jObjects2 = new JObject[4]; jArray.CopyTo(jObjects2, 2); var jAlice2 = jObjects2[2]; var jBob2 = jObjects2[3]; jObjects2[0].Should().BeNull(); jObjects2[1].Should().BeNull(); Assert.AreEqual(alice, jAlice2); Assert.AreEqual(bob, jBob2); }
/// <summary> /// called from JS /// </summary> /// <param name="args"></param> public void StartDrip(string args) { m_selectedTubes = (JArray)JsonConvert.DeserializeObject(args.ToString()); m_sortedTubesArr = new JToken[m_selectedTubes.Count]; m_selectedTubes.CopyTo(m_sortedTubesArr, 0); Array.Sort(m_sortedTubesArr, (token1, token2) => { int ret = 1; JObject obj1 = (JObject)token1; JObject obj2 = (JObject)token2; int type = int.Parse(obj1["type"].ToString()); if (type == (int)BoardType.Site) { int site1, site2, row1, row2, col1, col2; site1 = int.Parse(obj1["site"].ToString()); site2 = int.Parse(obj2["site"].ToString()); row1 = int.Parse(obj1["row"].ToString()); row2 = int.Parse(obj2["row"].ToString()); col1 = int.Parse(obj1["col"].ToString()); col2 = int.Parse(obj2["col"].ToString()); if (col1 < col2) { ret = -1; } else if (col1 == col2) { ret = ((site1 - 1) * BoardSetting.GetInstance().CurrentBoard.RowCount + row1) < ((site2 - 1) * BoardSetting.GetInstance().CurrentBoard.RowCount + row2) ? -1 : 1; } else { ret = 1; } } else { int grid1, grid2, row1, row2; grid1 = int.Parse(obj1["grid"].ToString()); grid2 = int.Parse(obj2["grid"].ToString()); row1 = int.Parse(obj1["row"].ToString()); row2 = int.Parse(obj2["row"].ToString()); if (grid1 < grid2) { ret = -1; } else if (grid1 == grid2) { ret = row1 < row2 ? -1 : 1; } else { ret = 1; } } return(ret); }); m_pipettingIndex = -1; DoPipetting(); m_selectedTubes.Clear(); //m_moveThread = new Thread(new ThreadStart(PipettingThread)); //m_moveThread.Start(); }