### Question:
TriangleCountWriteProc extends WriteProc<IntersectingTriangleCount, IntersectingTriangleCount.TriangleCountResult, TriangleCountWriteProc.WriteResult, TriangleCountWriteConfig> { @Procedure(value = "gds.triangleCount.write", mode = WRITE) @Description(DESCRIPTION) public Stream<WriteResult> write( @Name(value = "graphName") Object graphNameOrConfig, @Name(value = "configuration", defaultValue = "{}") Map<String, Object> configuration ) { return write(compute(graphNameOrConfig, configuration)); }  @Procedure(value = "gds.triangleCount.write", mode = WRITE) @Description(DESCRIPTION) Stream<WriteResult> write(
        @Name(value = "graphName") Object graphNameOrConfig,
        @Name(value = "configuration", defaultValue = "{}") Map<String, Object> configuration
    ); @Procedure(value = "gds.triangleCount.write.estimate", mode = READ) @Description(DESCRIPTION) Stream<MemoryEstimateResult> estimate(
        @Name(value = "graphName") Object graphNameOrConfig,
        @Name(value = "configuration", defaultValue = "{}") Map<String, Object> configuration
    );  }### Answer:
@Test void testWrite() { var query = GdsCypher.call() .loadEverything(Orientation.UNDIRECTED) .algo("triangleCount") .writeMode() .addParameter("writeProperty", "triangles") .yields(); assertCypherResult(query, List.of(Map.of( "globalTriangleCount", 5L, "nodeCount", 5L, "createMillis", greaterThan(-1L), "computeMillis", greaterThan(-1L), "postProcessingMillis", greaterThan(-1L), "configuration", isA(Map.class), "nodePropertiesWritten", 5L, "writeMillis", greaterThan(-1L) ))); Map<String, Long> expectedResult = Map.of( "a", 4L, "b", 4L, "c", 3L, "d", 3L, "e", 1L ); assertWriteResult(expectedResult, "triangles"); }