@@ -695,6 +695,172 @@ TEST_F(ProjMgrRpcTests, RpcSelectBundle) {
695695 EXPECT_EQ (responses[6 ][" error" ][" message" ], " UnknownCclass: component class not found" );
696696}
697697
698+ TEST_F (ProjMgrRpcTests, RpcGetContextInfoSingleCoreDevice) {
699+ string context = " project+CM0" ;
700+ vector<string> contextList = {
701+ context
702+ };
703+
704+ auto requests = CreateLoadRequests (" /Examples/solution.csolution.yml" , " CM0" , contextList);
705+ requests += FormatRequest (3 , " GetContextInfo" , json ({{ " context" , context }}));
706+
707+ const auto & responses = RunRpcMethods (requests);
708+
709+ EXPECT_TRUE (responses[2 ][" result" ][" success" ]);
710+ auto components = responses[2 ][" result" ][" components" ];
711+ auto packs = responses[2 ][" result" ][" packs" ];
712+ EXPECT_EQ (packs.size (), 2 );
713+ EXPECT_EQ (packs[0 ][" pack" ], " ARM::RteTest_DFP" );
714+ EXPECT_EQ (packs[0 ][" resolvedPack" ], " ARM::RteTest_DFP@0.2.0" );
715+ EXPECT_EQ (components[0 ][" id" ], " Device:Startup&RteTest Startup" );
716+ EXPECT_EQ (components[0 ][" resolvedComponent" ][" id" ], " ARM::Device:Startup&RteTest Startup@2.0.3" );
717+
718+ map<string, string> vars = responses[2 ][" result" ][" variables" ];
719+ EXPECT_EQ (vars[" BuildType" ], " " );
720+ EXPECT_EQ (vars[" Compiler" ], " AC6" );
721+ EXPECT_EQ (vars[" Dname" ], " RteTest_ARMCM0" );
722+ EXPECT_EQ (vars[" Dpack" ], testcmsispack_folder + " /ARM/RteTest_DFP/0.2.0/" );
723+ EXPECT_EQ (vars[" Pname" ], " " );
724+ EXPECT_EQ (vars[" Project" ], " project" );
725+ EXPECT_EQ (vars[" Solution" ], " solution" );
726+ EXPECT_EQ (vars[" TargetType" ], " CM0" );
727+
728+ EXPECT_FALSE (responses[2 ][" result" ].contains (" board" ));
729+ EXPECT_EQ (responses[2 ][" result" ][" pname" ], " " );
730+
731+ auto d0 = responses[2 ][" result" ][" device" ];
732+ EXPECT_EQ (d0[" id" ], " ARM::RteTest_ARMCM0" );
733+ EXPECT_EQ (d0[" family" ], " RteTest ARM Cortex M" );
734+ EXPECT_EQ (d0[" subFamily" ], " RteTest ARM Cortex M0" );
735+ EXPECT_EQ (d0[" pack" ], " ARM::RteTest_DFP@0.2.0" );
736+ EXPECT_EQ (d0[" processors" ].size (), 1 );
737+ EXPECT_EQ (d0[" processors" ][0 ][" name" ], " " );
738+ EXPECT_EQ (d0[" memories" ].size (), 2 );
739+ EXPECT_TRUE (d0.contains (" description" ));
740+
741+ map<string, string> attrs = responses[2 ][" result" ][" attributes" ];
742+ EXPECT_EQ (attrs[" Tcompiler" ], " ARMCC" );
743+ EXPECT_EQ (attrs[" Toptions" ], " AC6" );
744+ EXPECT_EQ (attrs[" Dname" ], " RteTest_ARMCM0" );
745+ EXPECT_EQ (attrs[" Dcore" ], " Cortex-M0" );
746+ EXPECT_EQ (attrs[" Dfpu" ], " NO_FPU" );
747+ EXPECT_EQ (attrs[" Pname" ], " " );
748+ }
749+
750+ TEST_F (ProjMgrRpcTests, RpcGetContextInfoMultiCoreDevice) {
751+ string context = " project+CM0_Dual" ;
752+ vector<string> contextList = {
753+ context
754+ };
755+
756+ auto requests = CreateLoadRequests (" /Examples/solution.csolution.yml" , " CM0_Dual" , contextList);
757+ requests += FormatRequest (3 , " GetContextInfo" , json ({{ " context" , context }}));
758+
759+ const auto & responses = RunRpcMethods (requests);
760+
761+ EXPECT_TRUE (responses[2 ][" result" ][" success" ]);
762+ auto components = responses[2 ][" result" ][" components" ];
763+ auto packs = responses[2 ][" result" ][" packs" ];
764+ EXPECT_EQ (packs.size (), 2 );
765+ EXPECT_EQ (packs[0 ][" pack" ], " ARM::RteTest_DFP" );
766+ EXPECT_EQ (packs[0 ][" resolvedPack" ], " ARM::RteTest_DFP@0.2.0" );
767+ EXPECT_EQ (components[0 ][" id" ], " Device:Startup&RteTest Startup" );
768+ EXPECT_EQ (components[0 ][" resolvedComponent" ][" id" ], " ARM::Device:Startup&RteTest Startup@2.0.3" );
769+
770+ map<string, string> vars = responses[2 ][" result" ][" variables" ];
771+ EXPECT_EQ (vars[" BuildType" ], " " );
772+ EXPECT_EQ (vars[" Compiler" ], " AC6" );
773+ EXPECT_EQ (vars[" Dname" ], " RteTest_ARMCM0_Dual" );
774+ EXPECT_EQ (vars[" Dpack" ], testcmsispack_folder + " /ARM/RteTest_DFP/0.2.0/" );
775+ EXPECT_EQ (vars[" Pname" ], " cm0_core0" );
776+ EXPECT_EQ (vars[" Project" ], " project" );
777+ EXPECT_EQ (vars[" Solution" ], " solution" );
778+ EXPECT_EQ (vars[" TargetType" ], " CM0_Dual" );
779+
780+ EXPECT_FALSE (responses[2 ][" result" ].contains (" board" ));
781+ EXPECT_EQ (responses[2 ][" result" ][" pname" ], " cm0_core0" );
782+
783+ auto d0 = responses[2 ][" result" ][" device" ];
784+ EXPECT_EQ (d0[" id" ], " ARM::RteTest_ARMCM0_Dual" );
785+ EXPECT_EQ (d0[" family" ], " RteTest ARM Cortex M" );
786+ EXPECT_EQ (d0[" subFamily" ], " RteTest ARM Cortex M0" );
787+ EXPECT_EQ (d0[" pack" ], " ARM::RteTest_DFP@0.2.0" );
788+ EXPECT_EQ (d0[" processors" ].size (), 2 );
789+ EXPECT_EQ (d0[" processors" ][0 ][" name" ], " cm0_core0" );
790+ EXPECT_EQ (d0[" memories" ].size (), 4 );
791+ EXPECT_TRUE (d0.contains (" description" ));
792+
793+ map<string, string> attrs = responses[2 ][" result" ][" attributes" ];
794+ EXPECT_EQ (attrs[" Tcompiler" ], " ARMCC" );
795+ EXPECT_EQ (attrs[" Toptions" ], " AC6" );
796+ EXPECT_EQ (attrs[" Dname" ], " RteTest_ARMCM0_Dual" );
797+ EXPECT_EQ (attrs[" Dcore" ], " Cortex-M0" );
798+ EXPECT_EQ (attrs[" Dfpu" ], " NO_FPU" );
799+ EXPECT_EQ (attrs[" Pname" ], " cm0_core0" );
800+ }
801+
802+
803+ TEST_F (ProjMgrRpcTests, RpcGetContextInfoBoard) {
804+ string context = " project+TestBoard" ;
805+ vector<string> contextList = {
806+ context
807+ };
808+
809+ auto requests = CreateLoadRequests (" /Examples/solution.csolution.yml" , " TestBoard" , contextList);
810+ requests += FormatRequest (3 , " GetContextInfo" , json ({{ " context" , context }}));
811+
812+ const auto & responses = RunRpcMethods (requests);
813+
814+ EXPECT_TRUE (responses[2 ][" result" ][" success" ]);
815+ auto components = responses[2 ][" result" ][" components" ];
816+ auto packs = responses[2 ][" result" ][" packs" ];
817+ EXPECT_EQ (packs.size (), 2 );
818+ EXPECT_EQ (packs[0 ][" pack" ], " ARM::RteTest_DFP" );
819+ EXPECT_EQ (packs[0 ][" resolvedPack" ], " ARM::RteTest_DFP@0.2.0" );
820+ EXPECT_EQ (components[0 ][" id" ], " Device:Startup&RteTest Startup" );
821+ EXPECT_EQ (components[0 ][" resolvedComponent" ][" id" ], " ARM::Device:Startup&RteTest Startup@2.0.3" );
822+
823+ map<string, string> vars = responses[2 ][" result" ][" variables" ];
824+ EXPECT_EQ (vars[" BuildType" ], " " );
825+ EXPECT_EQ (vars[" Compiler" ], " AC6" );
826+ EXPECT_EQ (vars[" Dname" ], " RteTest_ARMCM0_Dual" );
827+ EXPECT_EQ (vars[" Dpack" ], testcmsispack_folder + " /ARM/RteTest_DFP/0.2.0/" );
828+ EXPECT_EQ (vars[" Pname" ], " cm0_core0" );
829+ EXPECT_EQ (vars[" Project" ], " project" );
830+ EXPECT_EQ (vars[" Solution" ], " solution" );
831+ EXPECT_EQ (vars[" TargetType" ], " TestBoard" );
832+
833+ EXPECT_EQ (responses[2 ][" result" ][" pname" ], " cm0_core0" );
834+ auto d0 = responses[2 ][" result" ][" device" ];
835+ EXPECT_EQ (d0[" id" ], " ARM::RteTest_ARMCM0_Dual" );
836+ EXPECT_EQ (d0[" family" ], " RteTest ARM Cortex M" );
837+ EXPECT_EQ (d0[" subFamily" ], " RteTest ARM Cortex M0" );
838+ EXPECT_EQ (d0[" pack" ], " ARM::RteTest_DFP@0.2.0" );
839+ EXPECT_EQ (d0[" processors" ].size (), 2 );
840+ EXPECT_EQ (d0[" processors" ][0 ][" name" ], " cm0_core0" );
841+ EXPECT_EQ (d0[" memories" ].size (), 4 );
842+ EXPECT_TRUE (d0.contains (" description" ));
843+
844+ auto b1 = responses[2 ][" result" ][" board" ];
845+ EXPECT_EQ (b1[" id" ], " Keil::RteTest Dummy board:1.2.3" );
846+ EXPECT_EQ (b1[" pack" ], " ARM::RteTest_DFP@0.2.0" );
847+ EXPECT_EQ (b1[" description" ], " uVision Simulator" );
848+ auto devices = b1[" devices" ];
849+ EXPECT_EQ (devices.size (), 1 );
850+ EXPECT_FALSE (b1.contains (" memories" ));
851+ auto d1 = devices[0 ];
852+ EXPECT_EQ (d1[" id" ], " ARM::RteTest_ARMCM0_Dual" );
853+ EXPECT_EQ (d1[" processors" ].size (), 2 );
854+ EXPECT_EQ (d1[" processors" ][0 ][" name" ], " cm0_core0" );
855+
856+ map<string, string> attrs = responses[2 ][" result" ][" attributes" ];
857+ EXPECT_EQ (attrs[" Tcompiler" ], " ARMCC" );
858+ EXPECT_EQ (attrs[" Toptions" ], " AC6" );
859+ EXPECT_EQ (attrs[" Dname" ], " RteTest_ARMCM0_Dual" );
860+ EXPECT_EQ (attrs[" Dcore" ], " Cortex-M0" );
861+ EXPECT_EQ (attrs[" Dfpu" ], " NO_FPU" );
862+ EXPECT_EQ (attrs[" Pname" ], " cm0_core0" );
863+ }
698864
699865TEST_F (ProjMgrRpcTests, RpcGetUsedItems) {
700866 string context = " selectable+CM0" ;
@@ -779,6 +945,8 @@ TEST_F(ProjMgrRpcTests, RpcGetPacksInfoSimple) {
779945 auto & pack = packInfos[1 ];
780946
781947 EXPECT_EQ (pack[" id" ], " ARM::RteTest_DFP@0.2.0" );
948+ EXPECT_EQ (pack[" doc" ], testcmsispack_folder + " /ARM/RteTest_DFP/0.2.0/Doc/overview.md" );
949+
782950 auto & refs = pack[" references" ];
783951 EXPECT_EQ (refs.size (), 1 );
784952
0 commit comments