@@ -508,3 +508,76 @@ def test_printSchema_negative_level(self, spark):
508508
509509 with pytest .raises (PySparkValueError ):
510510 df .printSchema (level = - 1 )
511+
512+ def test_treeString_basic (self , spark ):
513+ data = [("Alice" , 25 , 5000 )]
514+ df = spark .createDataFrame (data , ["name" , "age" , "salary" ])
515+ tree = df .schema .treeString ()
516+
517+ assert tree .startswith ("root\n " )
518+ assert " |-- name:" in tree
519+ assert " |-- age:" in tree
520+ assert " |-- salary:" in tree
521+ assert "(nullable = true)" in tree
522+ assert tree .count (" |-- " ) == 3
523+
524+ def test_treeString_nested_struct (self , spark ):
525+ from spark_namespace .sql .types import IntegerType , StringType , StructField , StructType
526+
527+ schema = StructType ([
528+ StructField ("id" , IntegerType (), True ),
529+ StructField ("person" , StructType ([
530+ StructField ("name" , StringType (), True ),
531+ StructField ("age" , IntegerType (), True )
532+ ]), True )
533+ ])
534+ data = [(1 , {"name" : "Alice" , "age" : 25 })]
535+ df = spark .createDataFrame (data , schema )
536+ tree = df .schema .treeString ()
537+
538+ assert "root\n " in tree
539+ assert " |-- id:" in tree
540+ assert " |-- person: struct (nullable = true)" in tree
541+ assert "name:" in tree
542+ assert "age:" in tree
543+
544+ def test_treeString_with_level (self , spark ):
545+ from spark_namespace .sql .types import IntegerType , StringType , StructField , StructType
546+
547+ schema = StructType ([
548+ StructField ("id" , IntegerType (), True ),
549+ StructField ("person" , StructType ([
550+ StructField ("name" , StringType (), True ),
551+ StructField ("details" , StructType ([
552+ StructField ("address" , StringType (), True )
553+ ]), True )
554+ ]), True )
555+ ])
556+
557+ data = [(1 , {"name" : "Alice" , "details" : {"address" : "123 Main St" }})]
558+ df = spark .createDataFrame (data , schema )
559+
560+ # Level 1 should only show top-level fields
561+ tree_level_1 = df .schema .treeString (level = 1 )
562+ assert " |-- id:" in tree_level_1
563+ assert " |-- person: struct" in tree_level_1
564+ # Should not show nested field names at level 1
565+ lines = tree_level_1 .split ('\n ' )
566+ assert len ([l for l in lines if l .strip ()]) <= 3
567+
568+ def test_treeString_array_type (self , spark ):
569+ from spark_namespace .sql .types import ArrayType , StringType , StructField , StructType
570+
571+ schema = StructType ([
572+ StructField ("name" , StringType (), True ),
573+ StructField ("hobbies" , ArrayType (StringType ()), True )
574+ ])
575+
576+ data = [("Alice" , ["reading" , "coding" ])]
577+ df = spark .createDataFrame (data , schema )
578+ tree = df .schema .treeString ()
579+
580+ assert "root\n " in tree
581+ assert " |-- name:" in tree
582+ assert " |-- hobbies: array<" in tree
583+ assert "(nullable = true)" in tree
0 commit comments