manifold-rust 0.9.1

Pure Rust port of the Manifold 3D geometry library
Documentation
use super::*;

/// C++ TEST(Manifold, MergeRefine) — merge a tolerance mesh and refine to length
#[test]
fn test_cpp_merge_refine() {
    let mut mesh = MeshGL::default();
    mesh.tolerance = 1e-5;
    mesh.num_prop = 3;
    mesh.vert_properties = vec![
        0.01383194, -1.88699961, -1.09618223, -0.72694844, -1.30568409,
        -1.09618223, -0.72694844, -1.30568397, -1.09618223, -1.14769018,
        0.00177073, -1.09618223, -0.72777849, 1.30731535, -1.09618223,
        -0.72777843, 1.30731547, -1.09618223, 0.01344040, 1.88713050,
        -1.09618223, 0.75422078, 1.30581498, -1.09618223, 0.75422555,
        1.30580890, -1.09618223, 1.14608598, -0.00000003, -1.09618223,
        0.75343317, -1.30844986, -1.09618223, 0.00032274, 2.45551205,
        0.70305431, -0.00045545, 0.49932927, 1.63340366, -0.00045485,
        0.49933004, 1.63340306, 0.59210259, 2.54137087, 0.46526274,
        -0.00083422, -0.50377685, 1.63340366, -0.00153223, -2.45697832,
        0.70305431, 0.59018338, -2.54327321, 0.46526241, 0.59018356,
        -2.54327297, 0.46526247, -0.00083402, -0.50377715, 1.63340342,
        -0.00153225, -2.45697832, 0.70305425, -0.00083453, -0.50377727,
        1.63340330, -0.59329146, -2.54207492, 0.46526280, -0.00045549,
        0.49932927, 1.63340366, -0.59137100, 2.54256892, 0.46526301,
        -0.59137243, 2.54256916, 0.46526241, -1.09916806, 1.80846310,
        0.62867594, -1.09916782, 1.80846262, 0.62867624, 1.09932983,
        1.80623639, 0.62867647, 1.09933031, 1.80623722, 0.62867594,
        0.59210330, 2.54137087, 0.46526241, 1.09796500, -1.80969083,
        0.62867600, -1.10053313, -1.80746412, 0.62867641, -1.10053349,
        -1.80746484, 0.62867594, -0.59329236, -2.54207492, 0.46526238,
        -0.00045545, 0.49932924, 1.63340366, -0.45734894, -0.00169915,
        1.59454787, -0.00065268, -0.00251516, 1.81522143, 0.45606264,
        -0.00262397, 1.59454787, 0.45606312, -0.00262326, 1.59454739,
        0.45606264, -0.00262397, 1.59454787, -0.00065267, -0.00251517,
        1.81522143, -0.00083422, -0.50377685, 1.63340366, 1.09796488,
        -1.80969071, 0.62867606, 0.45606279, -0.00262419, 1.59454775,
        -0.45734891, -0.00169916, 1.59454787, -0.45734927, -0.00169968,
        1.59454751, -1.56936228, 1.35052788, 0.52379429, -0.45734900,
        -0.00169913, 1.59454787, 1.56918728, 1.34735024, 0.52379429,
        1.56811047, -1.35147583, 0.52380723, 1.56808507, -1.35131860,
        0.52387440, -1.57038140, -1.34824181, 0.52379429, -1.56936240,
        1.35052788, 0.52379423, -1.44328797, 0.00054518, 0.88277382,
        -1.44327283, 0.00043958, 0.88280576, 1.44195509, -0.00248179,
        0.88287276, 1.44223559, -0.00054497, 0.88228679, 1.56918740,
        1.34735012, 0.52379423, -1.57040441, -1.34818101, 0.52378970,
        -1.57038152, -1.34824169, 0.52379423, 0.00060985, 3.12254715,
        -0.12592883, 0.00060586, 3.12254739, -0.12593007, -0.21464077,
        3.10757208, -0.15445986, -0.42353559, 3.05566168, -0.13569236,
        -0.62559998, 2.98231292, -0.08878353, 0.62670720, 2.98100901,
        -0.08873826, 0.62661505, 2.98107791, -0.08880345, 0.42469645,
        3.05480289, -0.13569044, 0.21584108, 3.10713625, -0.15445758,
        -0.00174801, -3.12165236, -0.12629783, 0.21322219, -3.10669637,
        -0.15490441, 0.42281535, -3.05461216, -0.13599920, 0.62440765,
        -2.98143482, -0.08901373, 0.62447023, -2.98138809, -0.08896933,
        -0.62786478, -2.98014331, -0.08899876, -0.62786037, -2.98014665,
        -0.08900189, -0.42584255, -3.05390787, -0.13610038, -0.21698712,
        -3.10624146, -0.15494294, -0.00175192, -3.12165260, -0.12629905,
        -0.62560898, 2.98230958, -0.08879187, -0.78726906, 2.86185288,
        -0.16757384, -0.93646783, 2.72652268, -0.21237959, -1.07508647,
        2.58084154, -0.23096853, -1.20526373, 2.42826319, -0.23021236,
        -1.32975245, 2.27157402, -0.21704006, -1.45062196, 2.05095077,
        -0.12514453, -1.45065486, 2.05087924, -0.12510653, 1.45106840,
        2.04791498, -0.12508209, 1.45102346, 2.04801273, -0.12513401,
        1.33032060, 2.26888084, -0.21701908, 1.20595014, 2.42582202,
        -0.23018987, 1.07588828, 2.57866383, -0.23094597, 0.93737990,
        2.72462535, -0.21235918, 0.78851759, 2.86004448, -0.16762893,
        0.78625345, -2.86083961, -0.16809504, 0.93532181, -2.72562766,
        -0.21302269, 1.07394040, -2.57994676, -0.23167852, 1.20411777,
        -2.42736840, -0.23091961, 1.32860637, -2.27067924, -0.21769993,
        1.44944537, -2.05011153, -0.12549706, 1.56815219, -1.35151458,
        0.52370584, -1.45212758, -2.04719448, -0.12551625, -1.33146667,
        -2.26798582, -0.21772107, -1.20709634, -2.42492723, -0.23094229,
        -1.07703435, -2.57776904, -0.23170128, -0.93852592, -2.72373033,
        -0.21304333, -0.78942937, -2.85936260, -0.16807115, -1.80910003,
        1.01058388, -0.03365797, -1.84168148, 0.80862963, -0.10271203,
        -1.86654651, 0.60610521, -0.15332751, -1.88623869, 0.40378988,
        -0.19160835, -1.90002000, 0.20241861, -0.21582428, -1.90505385,
        0.00237573, -0.21922338, -1.90501344, 0.00071962, -0.21905561,
        -1.90017104, -0.19767725, -0.21568473, -1.88654184, -0.39907673,
        -0.19146930, -1.86700249, -0.60143071, -0.15318951, -1.84229040,
        -0.80400622, -0.10257494, -1.80987811, -1.00592279, -0.03355779,
        1.90388918, -0.00071938, -0.21917287, 1.89902496, 0.19857220,
        -0.21578738, 1.88539588, 0.39997119, -0.19157638, 1.86585641,
        0.60232592, -0.15330335, 1.84114432, 0.80490118, -0.10269797,
        1.80871546, 1.00692093, -0.03365800, 1.80794466, -1.00973761,
        -0.03369782, 1.80795383, -1.00968957, -0.03371784, 1.84053540,
        -0.80773503, -0.10275956, 1.86540043, -0.60521013, -0.15336604,
        1.88509274, -0.40289518, -0.19163992, 1.89881432, -0.20239551,
        -0.21574667, -1.54677641, 1.84270406, -0.22365679, -1.63208210,
        1.62775970, -0.25862685, -1.70706439, 1.40805590, -0.23586856,
        -1.77522779, 1.18613660, -0.17659405, -1.80909991, 1.01058459,
        -0.03365869, 1.80871534, 1.00692177, -0.03365877, 1.77497590,
        1.18254220, -0.17653592, 1.70699000, 1.40456688, -0.23577766,
        1.63230419, 1.62443995, -0.25918254, 1.54714429, 1.83953130,
        -0.22410297, -1.80986142, -1.00602686, -0.03365880, -1.77612185,
        -1.18164730, -0.17739406, -1.70812643, -1.40370321, -0.23700003,
        -1.63330925, -1.62356102, -0.25988522, -1.54816461, -1.83868098,
        -0.22471850, -1.45216942, -2.04711795, -0.12558441, 1.44947588,
        -2.05005574, -0.12554680, 1.54517174, -1.84302914, -0.22456542,
        1.63157570, -1.62538552, -0.26028806, 1.70592797, -1.40712976,
        -0.23690872, 1.77408183, -1.18524182, -0.17733525, 0.00060586,
        3.12254739, -0.46959737, -0.21464077, 3.10757208, -0.45468479,
        0.00060591, 3.12254739, -0.46959740, 0.21584108, 3.10713625,
        -0.45459676, -0.00175192, -3.12165260, -0.46959740, 0.21322219,
        -3.10669637, -0.45459723, -0.00175193, -3.12165260, -0.46959740,
        -0.21698712, -3.10624146, -0.45467842, -0.42353559, 3.05566168,
        -0.46107247, 0.42469645, 3.05480289, -0.46099803, 0.42281535,
        -3.05461216, -0.46102279, -0.42584255, -3.05390787, -0.46106711,
        -0.62560898, 2.98230958, -0.48016420, 0.62440765, -2.98143482,
        -0.48015898, 0.62661505, 2.98107791, -0.48015478, -0.62786037,
        -2.98014665, -0.48016420, -0.78726906, 2.86185288, -0.45703074,
        0.62445766, -2.98139739, -0.48017445, 0.78625345, -2.86083961,
        -0.45658660, 0.78851759, 2.86004448, -0.45661709, 0.62670475,
        2.98101068, -0.48018256, -0.78942937, -2.85936260, -0.45704728,
        -0.62786043, -2.98014665, -0.48016423, -0.93646783, 2.72652268,
        -0.44622171, 0.93532181, -2.72562766, -0.44563186, -0.93852592,
        -2.72373033, -0.44624415, 0.93737990, 2.72462535, -0.44568357,
        -1.07508647, 2.58084154, -0.44488293, 1.07394040, -2.57994676,
        -0.44435173, -1.07703435, -2.57776904, -0.44490317, 1.07588828,
        2.57866383, -0.44439828, -1.20526373, 2.42826319, -0.45050618,
        1.20411777, -2.42736840, -0.45019045, -1.20709634, -2.42492723,
        -0.45051819, 1.20595014, 2.42582202, -0.45021811, -1.32975245,
        2.27157426, -0.46058667, -1.32975245, 2.27157402, -0.46058667,
        1.32860637, -2.27067924, -0.46058667, -1.33146667, -2.26798582,
        -0.46058667, -1.33146656, -2.26798606, -0.46058667, 1.33032060,
        2.26888084, -0.46058667, 1.33032048, 2.26888084, -0.46058667,
        -1.45062196, 2.05095077, -0.45238319, 1.32860649, -2.27067924,
        -0.46058670, 1.44947588, -2.05005574, -0.45129201, -1.45216942,
        -2.04711795, -0.45243445, 1.45102346, 2.04801273, -0.45137730,
        -1.54677641, 1.84270406, -0.45860177, 1.54517174, -1.84302914,
        -0.45671692, -1.54816461, -1.83868098, -0.45867091, 1.54714429,
        1.83953130, -0.45686778, -1.63208210, 1.62775970, -0.47587365,
        -1.63330925, -1.62356102, -0.47593805, 1.63157570, -1.62538552,
        -0.47375324, 1.63230419, 1.62443995, -0.47368667, -1.70706439,
        1.40805590, -0.50303531, -1.70812643, -1.40370321, -0.50307423,
        1.70592797, -1.40712976, -0.50065041, 1.70699000, 1.40456688,
        -0.50072700, -1.77522779, 1.18613660, -0.53636789, -1.77612185,
        -1.18164730, -0.53636789, 1.77308404, -1.18848991, -0.53344285,
        1.77408183, -1.18524182, -0.53272378, 1.77497590, 1.18254220,
        -0.53206521, 1.77341759, 1.18763101, -0.53318721, -1.80909991,
        1.01058459, -0.51588774, -1.80986142, -1.00602686, -0.51592720,
        -1.77612185, -1.18164718, -0.53636789, 1.80795383, -1.00968957,
        -0.51267529, 1.80871534, 1.00692177, -0.51214570, -1.84168148,
        0.80862963, -0.49827772, -1.84229040, -0.80400622, -0.49834538,
        1.84053540, -0.80773503, -0.49560285, 1.84114432, 0.80490118,
        -0.49522084, -1.86654651, 0.60610521, -0.48789516, -1.86700249,
        -0.60143071, -0.48796996, 1.86540043, -0.60521013, -0.48580948,
        1.86585641, 0.60232592, -0.48557436, -1.88623869, 0.40378988,
        -0.48232013, -1.88654184, -0.39907673, -0.48238823, 1.88509274,
        -0.40289518, -0.48085603, 1.88539588, 0.39997119, -0.48076698,
        -1.90002000, 0.20241861, -0.48219424, -1.90017104, -0.19767725,
        -0.48223990, 1.89881432, -0.20239551, -0.48138389, 1.89902496,
        0.19857220, -0.48143867, 1.89892781, 0.20000805, -0.48143691,
        -1.90505385, 0.00237582, -0.49013662, -1.90505385, 0.00237573,
        -0.49013659, 1.90388918, -0.00071975, -0.21917289, 1.90388918,
        -0.00071975, -0.49010351, 1.90388906, -0.00072469, -0.49010390,
        1.90128529, 0.00611682, -0.49218670, 1.40738547, 1.02835560,
        -0.88730782, 1.40482545, -1.03119016, -0.88952076, 1.40470743,
        -1.02958739, -0.88973862, -1.41726339, 1.01772320, -0.88060957,
        -1.90505385, 0.00237566, -0.49013662, -1.41691077, -1.01434207,
        -0.88060957, 1.32860637, -2.27067900, -0.46058673, 1.40398669,
        -1.03246403, -0.88968676, 1.40373409, 1.02831805, -0.89023006,
        -1.32975245, 2.27157402, -0.46058670, -1.41726327, 1.01772332,
        -0.88060963, -1.41726327, 1.01772320, -0.88060963, -1.41691077,
        -1.01434207, -0.88060963, -1.14769018, 0.00177076, -1.09618223,
        1.14696825, -0.00000003, -1.09586132, 1.40373087, 1.02831531,
        -0.89023262, 0.40889478, -2.28727150, -0.89325231, 0.40938482,
        2.28683925, -0.89325225, -0.62560904, 2.98230958, -0.48016423,
        -0.39072043, 2.28764248, -0.89325225, -0.39121491, -2.28645349,
        -0.89325231, 0.40889484, -2.28727150, -0.89325231, 0.75434840,
        -1.30917358, -1.09577036, 0.40938476, 2.28683901, -0.89325231,
        -0.39072037, 2.28764224, -0.89325231, -0.00175192, -3.12165236,
        -0.46959746, 0.40889472, -2.28727150, -0.89325231, 0.00060591,
        3.12254691, -0.46959764, -0.39072025, 2.28764224, -0.89325237,
        0.40938473, 2.28683901, -0.89325237, 0.01344044, 1.88713050,
        -1.09618223, 0.00032271, 2.45551205, 0.70305431,
    ];
    mesh.tri_verts = vec![
        0, 1, 2, 0, 2, 3, 0, 3, 4, 0, 4, 5, 0, 5, 6, 0, 6, 7, 0, 7, 8, 0, 8,
        9, 9, 10, 0, 11, 12, 13, 13, 14, 11, 15, 16, 17, 15, 17, 18, 18, 19, 15,
        20, 15, 21, 21, 22, 20, 23, 24, 25, 23, 25, 26, 26, 27, 23, 14, 13, 28,
        14, 28, 29, 29, 30, 14, 19, 18, 31, 22, 21, 32, 22, 32, 33, 33, 34, 22,
        35, 27, 36, 36, 37, 35, 12, 37, 38, 12, 38, 39, 12, 39, 28, 40, 41, 42,
        40, 42, 19, 40, 19, 43, 43, 44, 40, 42, 41, 45, 42, 45, 46, 42, 46, 32,
        32, 21, 42, 47, 48, 27, 27, 26, 47, 28, 39, 49, 49, 29, 28, 43, 31, 50,
        43, 50, 51, 51, 44, 43, 32, 46, 52, 52, 33, 32, 48, 47, 53, 48, 53, 54,
        54, 55, 48, 44, 51, 56, 56, 40, 44, 38, 56, 57, 38, 57, 58, 38, 58, 49,
        49, 39, 38, 45, 55, 59, 45, 59, 60, 45, 60, 52, 52, 46, 45, 24, 11, 61,
        24, 61, 62, 24, 62, 63, 24, 63, 64, 24, 64, 65, 65, 25, 24, 61, 11, 14,
        61, 14, 30, 61, 30, 66, 61, 66, 67, 61, 67, 68, 68, 69, 61, 17, 20, 70,
        17, 70, 71, 17, 71, 72, 17, 72, 73, 73, 74, 17, 70, 20, 22, 70, 22, 34,
        70, 34, 75, 70, 75, 76, 70, 76, 77, 70, 77, 78, 78, 79, 70, 25, 65, 80,
        25, 80, 81, 25, 81, 82, 25, 82, 83, 25, 83, 84, 25, 84, 85, 25, 85, 86,
        25, 86, 87, 25, 87, 53, 25, 53, 47, 47, 26, 25, 66, 30, 29, 66, 29, 49,
        66, 49, 58, 66, 58, 88, 66, 88, 89, 66, 89, 90, 66, 90, 91, 66, 91, 92,
        66, 92, 93, 93, 94, 66, 17, 74, 95, 17, 95, 96, 17, 96, 97, 17, 97, 98,
        17, 98, 99, 17, 99, 100, 17, 100, 101, 17, 101, 50, 17, 50, 31, 52, 60,
        102, 52, 102, 103, 52, 103, 104, 52, 104, 105, 52, 105, 106, 52, 106,
        107, 52, 107, 75, 52, 75, 34, 34, 33, 52, 54, 53, 108, 54, 108, 109, 54,
        109, 110, 54, 110, 111, 54, 111, 112, 54, 112, 113, 113, 114, 54, 54,
        114, 115, 54, 115, 116, 54, 116, 117, 54, 117, 118, 54, 118, 119, 54,
        119, 59, 59, 55, 54, 58, 57, 120, 58, 120, 121, 58, 121, 122, 58, 122,
        123, 58, 123, 124, 124, 125, 58, 120, 57, 56, 120, 56, 51, 120, 51, 50,
        120, 50, 101, 120, 101, 126, 120, 126, 127, 120, 127, 128, 120, 128, 129,
        120, 129, 130, 120, 130, 131, 53, 87, 132, 53, 132, 133, 53, 133, 134,
        53, 134, 135, 53, 135, 136, 136, 108, 53, 58, 125, 137, 58, 137, 138,
        58, 138, 139, 58, 139, 140, 58, 140, 141, 141, 88, 58, 59, 119, 142, 59,
        142, 143, 59, 143, 144, 59, 144, 145, 59, 145, 146, 59, 146, 147, 59,
        147, 102, 102, 60, 59, 101, 100, 148, 101, 148, 149, 101, 149, 150, 101,
        150, 151, 101, 151, 152, 152, 126, 101, 62, 153, 154, 154, 63, 62, 155,
        62, 61, 155, 61, 69, 69, 156, 155, 79, 157, 158, 79, 158, 71, 71, 70,
        79, 159, 79, 78, 78, 160, 159, 63, 154, 161, 161, 64, 63, 69, 68, 162,
        162, 156, 69, 71, 158, 163, 163, 72, 71, 78, 77, 164, 164, 160, 78, 64,
        161, 165, 64, 165, 80, 80, 65, 64, 72, 163, 166, 166, 73, 72, 68, 67,
        167, 167, 162, 68, 77, 76, 168, 168, 164, 77, 80, 165, 169, 169, 81, 80,
        73, 166, 170, 73, 170, 171, 73, 171, 95, 95, 74, 73, 66, 94, 172, 66,
        172, 173, 66, 173, 167, 167, 67, 66, 75, 107, 174, 75, 174, 175, 175,
        76, 75, 81, 169, 176, 176, 82, 81, 95, 171, 177, 177, 96, 95, 107, 106,
        178, 178, 174, 107, 94, 93, 179, 179, 172, 94, 82, 176, 180, 180, 83,
        82, 96, 177, 181, 181, 97, 96, 106, 105, 182, 182, 178, 106, 93, 92, 183,
        183, 179, 93, 83, 180, 184, 184, 84, 83, 97, 181, 185, 185, 98, 97, 105,
        104, 186, 186, 182, 105, 92, 91, 187, 187, 183, 92, 84, 184, 188, 189,
        85, 84, 98, 185, 190, 190, 99, 98, 104, 103, 191, 192, 186, 104, 91, 90,
        193, 194, 187, 91, 85, 189, 195, 195, 86, 85, 99, 196, 197, 99, 197, 148,
        148, 100, 99, 102, 147, 198, 102, 198, 191, 191, 103, 102, 90, 89, 199,
        199, 193, 90, 86, 195, 200, 86, 200, 132, 132, 87, 86, 148, 197, 201,
        201, 149, 148, 147, 146, 202, 202, 198, 147, 88, 141, 203, 88, 203, 199,
        199, 89, 88, 132, 200, 204, 204, 133, 132, 146, 145, 205, 205, 202, 146,
        149, 201, 206, 206, 150, 149, 141, 140, 207, 207, 203, 141, 133, 204,
        208, 208, 134, 133, 145, 144, 209, 209, 205, 145, 150, 206, 210, 210,
        151, 150, 140, 139, 211, 211, 207, 140, 134, 208, 212, 212, 135, 134,
        144, 143, 213, 213, 209, 144, 151, 210, 214, 151, 214, 215, 215, 152,
        151, 139, 138, 216, 139, 216, 217, 217, 211, 139, 135, 212, 218, 218,
        136, 135, 143, 142, 219, 143, 219, 220, 152, 215, 221, 152, 221, 127,
        127, 126, 152, 138, 137, 222, 222, 216, 138, 136, 218, 223, 136, 223,
        109, 109, 108, 136, 119, 118, 224, 119, 224, 219, 219, 142, 119, 127,
        221, 225, 225, 128, 127, 125, 124, 226, 125, 226, 222, 222, 137, 125,
        109, 223, 227, 227, 110, 109, 118, 117, 228, 228, 224, 118, 128, 225,
        229, 229, 129, 128, 124, 123, 230, 230, 226, 124, 110, 227, 231, 231,
        111, 110, 117, 116, 232, 232, 228, 117, 129, 229, 233, 233, 130, 129,
        123, 122, 234, 234, 230, 123, 111, 231, 235, 235, 112, 111, 116, 115,
        236, 236, 232, 116, 130, 233, 237, 237, 131, 130, 122, 121, 238, 122,
        238, 239, 239, 234, 122, 112, 235, 240, 240, 113, 112, 113, 241, 236,
        113, 236, 115, 115, 114, 113, 238, 121, 120, 238, 120, 242, 242, 243,
        238, 243, 242, 131, 243, 131, 237, 243, 237, 244, 243, 245, 239, 239,
        238, 243, 239, 245, 246, 239, 246, 217, 239, 217, 216, 239, 216, 222,
        239, 222, 226, 239, 226, 230, 230, 234, 239, 214, 247, 248, 214, 248,
        244, 214, 244, 237, 214, 237, 233, 214, 233, 229, 214, 229, 225, 214,
        225, 221, 221, 215, 214, 212, 249, 240, 212, 240, 235, 212, 235, 231,
        212, 231, 227, 212, 227, 223, 223, 218, 212, 236, 250, 251, 236, 251,
        220, 236, 220, 219, 236, 219, 224, 236, 224, 228, 228, 232, 236, 197,
        252, 253, 197, 253, 247, 197, 247, 214, 197, 214, 210, 197, 210, 206,
        206, 201, 197, 217, 246, 254, 217, 254, 194, 217, 194, 193, 217, 193,
        199, 217, 199, 203, 217, 203, 207, 207, 211, 217, 195, 255, 256, 195,
        257, 249, 195, 249, 212, 195, 212, 208, 195, 208, 204, 204, 200, 195,
        220, 258, 192, 220, 191, 198, 220, 198, 202, 220, 202, 205, 220, 205,
        209, 259, 251, 250, 259, 250, 240, 259, 240, 249, 249, 257, 259, 244,
        248, 260, 244, 260, 261, 244, 261, 254, 244, 254, 246, 244, 246, 245,
        171, 170, 262, 171, 262, 252, 171, 190, 185, 171, 185, 181, 181, 177,
        171, 187, 194, 263, 187, 263, 173, 187, 173, 172, 187, 172, 179, 179,
        183, 187, 169, 264, 265, 169, 265, 255, 169, 255, 188, 169, 188, 184,
        169, 184, 180, 180, 176, 169, 192, 266, 175, 192, 175, 174, 192, 174,
        178, 192, 178, 182, 182, 186, 192, 252, 267, 268, 268, 253, 252, 254,
        261, 8, 254, 8, 7, 254, 7, 269, 254, 269, 263, 263, 194, 254, 265, 270,
        5, 265, 4, 256, 256, 255, 265, 192, 258, 2, 192, 2, 1, 1, 266, 192, 158,
        271, 272, 158, 272, 170, 158, 170, 166, 166, 163, 158, 263, 269, 273,
        263, 273, 155, 263, 155, 156, 263, 156, 162, 263, 162, 167, 167, 173,
        263, 271, 160, 164, 271, 164, 168, 168, 266, 271, 153, 273, 274, 153,
        274, 270, 153, 270, 265, 153, 265, 264, 153, 264, 161, 161, 154, 153,
        271, 266, 0, 0, 272, 271, 274, 273, 275, 275, 276, 274, 260, 9, 8, 8,
        261, 260, 9, 260, 248, 9, 248, 247, 9, 247, 253, 9, 253, 268, 268, 10,
        9, 256, 4, 259, 3, 2, 258, 272, 0, 10, 272, 10, 268, 268, 267, 272, 7,
        276, 275, 274, 6, 5, 5, 270, 274, 0, 266, 1, 277, 24, 23,
    ];
    mesh.merge();
    let manifold = Manifold::from_mesh_gl(&mesh);
    let refined = manifold.refine_to_length(1.0);
    assert!((refined.volume() - 31.21).abs() < 0.01,
        "MergeRefine: expected volume≈31.21, got {}", refined.volume());
}

/// C++ TEST(Manifold, ObjRoundTrip) — cube → OBJ string → cube, volume preserved.
#[test]
fn test_cpp_obj_round_trip() {
    let m = Manifold::cube(Vec3::new(1.0, 1.0, 1.0), false);
    let obj = m.write_obj();
    let m2 = Manifold::read_obj(&obj);
    assert_eq!(m2.status(), crate::types::Error::NoError,
        "ObjRoundTrip: status={:?}", m2.status());
    assert!((m2.volume() - 1.0).abs() < 1e-9,
        "ObjRoundTrip: volume={}, expected 1", m2.volume());
}