test_class.file: openrtb-core/src/test/java/com/google/openrtb/snippet/OpenRtbSnippetProcessorTest.java
test_class.identifier: OpenRtbSnippetProcessorTest
test_case.body: @Test
    public void testProcess() {
      BidRequest req = BidRequest.newBuilder()
          .setId("req1")
          .addCur("USD")
          .addImp(Imp.newBuilder()
              .setId("imp1")
              .setBanner(Banner.newBuilder()))
          .build();
      Bid.Builder bid = Bid.newBuilder()
          // See docs about allowed macro dependencies.
          .setAdid("ad-" + OpenRtbMacros.AUCTION_CURRENCY.key())
          .setAdm("adm-" + OpenRtbMacros.AUCTION_PRICE.key())
          .setCid("c-" + OpenRtbMacros.AUCTION_SEAT_ID.key())
          .setCrid("cr-" + OpenRtbMacros.AUCTION_ID.key())
          .setDealid("%{deal-" + OpenRtbMacros.AUCTION_PRICE.key() + "}%")
          .setId("bid-" + OpenRtbMacros.AUCTION_AD_ID.key())
          .setImpid("imp1")
          .setIurl("http://iurl?id=" + OpenRtbMacros.AUCTION_BID_ID.key())
          .setNurl("http://nurl?id=" + OpenRtbMacros.AUCTION_IMP_ID.key())
          .setPrice(10000);
      BidResponse.Builder resp1 = BidResponse.newBuilder()
          .setBidid("bid-1")
          .addSeatbid(SeatBid.newBuilder()
              .setSeat("seat1")
              .addBid(bid));
      BidResponse.Builder resp2 = resp1.clone();
      OpenRtbSnippetProcessor processor = new OpenRtbSnippetProcessor(true);
      processor.process(new SnippetProcessorContext(req, resp1));
      bid = resp1.getSeatbidBuilder(0).getBidBuilder(0);
      assertThat(bid.getAdid()).isEqualTo("ad-USD");
      assertThat(bid.getAdm()).isEqualTo("adm-${AUCTION_PRICE}");
      assertThat(bid.getCid()).isEqualTo("c-seat1");
      assertThat(bid.getCrid()).isEqualTo("cr-req1");
      assertThat(bid.getDealid()).isEqualTo("deal-%24%7BAUCTION_PRICE%7D");
      assertThat(bid.getId()).isEqualTo("bid-ad-USD");
      assertThat(bid.getIurl()).isEqualTo("http://iurl?id=bid-1");
      assertThat(bid.getNurl()).isEqualTo("http://nurl?id=imp1");
      processor = new OpenRtbSnippetProcessor(false);
      processor.process(new SnippetProcessorContext(req, resp2));
      bid = resp2.getSeatbidBuilder(0).getBidBuilder(0);
      assertThat(bid.getAdid()).isEqualTo("ad-${AUCTION_CURRENCY}");
      assertThat(bid.getAdm()).isEqualTo("adm-${AUCTION_PRICE}");
      assertThat(bid.getCid()).isEqualTo("c-${AUCTION_SEAT_ID}");
      assertThat(bid.getCrid()).isEqualTo("cr-${AUCTION_ID}");
      assertThat(bid.getDealid()).isEqualTo("%{deal-${AUCTION_PRICE}}%");
      assertThat(bid.getId()).isEqualTo("bid-${AUCTION_AD_ID}");
      assertThat(bid.getIurl()).isEqualTo("http://iurl?id=${AUCTION_BID_ID}");
      assertThat(bid.getNurl()).isEqualTo("http://nurl?id=${AUCTION_IMP_ID}");
    }
test_case.class_method_signature: OpenRtbSnippetProcessorTest.testProcess()
test_case.full_signature: @Test public void testProcess()
test_case.identifier: testProcess
test_case.invocations: build addImp addCur setId newBuilder setBanner setId newBuilder newBuilder setPrice setNurl setIurl setImpid setId setDealid setCrid setCid setAdm setAdid newBuilder key key key key key key key key addSeatbid setBidid newBuilder addBid setSeat newBuilder clone process getBidBuilder getSeatbidBuilder isEqualTo assertThat getAdid isEqualTo assertThat getAdm isEqualTo assertThat getCid isEqualTo assertThat getCrid isEqualTo assertThat getDealid isEqualTo assertThat getId isEqualTo assertThat getIurl isEqualTo assertThat getNurl process getBidBuilder getSeatbidBuilder isEqualTo assertThat getAdid isEqualTo assertThat getAdm isEqualTo assertThat getCid isEqualTo assertThat getCrid isEqualTo assertThat getDealid isEqualTo assertThat getId isEqualTo assertThat getIurl isEqualTo assertThat getNurl
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testProcess()
focal_class.declarator: ORTB_NULL = new OpenRtbSnippetProcessor(false) {
      @Override public String process(SnippetProcessorContext ctx, String snippet) {
        return SnippetProcessor.NULL.process(ctx, snippet);
      }}
focal_class.modifier: public static final
focal_class.original_string: public static final OpenRtbSnippetProcessor ORTB_NULL = new OpenRtbSnippetProcessor(false) {
      @Override public String process(SnippetProcessorContext ctx, String snippet) {
        return SnippetProcessor.NULL.process(ctx, snippet);
      }};
focal_class.type: OpenRtbSnippetProcessor
focal_class.var_name: ORTB_NULL
focal_class.declarator: extendedFields
focal_class.modifier: private final
focal_class.original_string: private final boolean extendedFields;
focal_class.type: boolean
focal_class.var_name: extendedFields
focal_class.file: openrtb-core/src/main/java/com/google/openrtb/snippet/OpenRtbSnippetProcessor.java
focal_class.identifier: OpenRtbSnippetProcessor
focal_class.class_method_signature: OpenRtbSnippetProcessor.OpenRtbSnippetProcessor(boolean extendedFields)
focal_class.full_signature: public  OpenRtbSnippetProcessor(boolean extendedFields)
focal_class.identifier: OpenRtbSnippetProcessor
focal_class.modifiers: public
focal_class.parameters: (boolean extendedFields)
focal_class.signature:  OpenRtbSnippetProcessor(boolean extendedFields)
focal_class.class_method_signature: OpenRtbSnippetProcessor.OpenRtbSnippetProcessor()
focal_class.full_signature: public  OpenRtbSnippetProcessor()
focal_class.identifier: OpenRtbSnippetProcessor
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.signature:  OpenRtbSnippetProcessor()
focal_class.class_method_signature: OpenRtbSnippetProcessor.registerMacros()
focal_class.full_signature: @Override protected List<SnippetMacroType> registerMacros()
focal_class.identifier: registerMacros
focal_class.modifiers: @Override protected
focal_class.parameters: ()
focal_class.return: List<SnippetMacroType>
focal_class.signature: List<SnippetMacroType> registerMacros()
focal_class.class_method_signature: OpenRtbSnippetProcessor.processMacroAt(
        SnippetProcessorContext ctx, SnippetMacroType macroDef)
focal_class.full_signature: @Override protected boolean processMacroAt(
        SnippetProcessorContext ctx, SnippetMacroType macroDef)
focal_class.identifier: processMacroAt
focal_class.modifiers: @Override protected
focal_class.parameters: (
        SnippetProcessorContext ctx, SnippetMacroType macroDef)
focal_class.return: boolean
focal_class.signature: boolean processMacroAt(
        SnippetProcessorContext ctx, SnippetMacroType macroDef)
focal_class.class_method_signature: OpenRtbSnippetProcessor.process(SnippetProcessorContext bidCtx)
focal_class.full_signature: public void process(SnippetProcessorContext bidCtx)
focal_class.identifier: process
focal_class.modifiers: public
focal_class.parameters: (SnippetProcessorContext bidCtx)
focal_class.return: void
focal_class.signature: void process(SnippetProcessorContext bidCtx)
focal_class.class_method_signature: OpenRtbSnippetProcessor.processFields(SnippetProcessorContext bidCtx)
focal_class.full_signature: protected void processFields(SnippetProcessorContext bidCtx)
focal_class.identifier: processFields
focal_class.modifiers: protected
focal_class.parameters: (SnippetProcessorContext bidCtx)
focal_class.return: void
focal_class.signature: void processFields(SnippetProcessorContext bidCtx)
focal_class.class_method_signature: OpenRtbSnippetProcessor.findSeat(SnippetProcessorContext ctx, SnippetMacroType macro)
focal_class.full_signature: private SeatBidOrBuilder findSeat(SnippetProcessorContext ctx, SnippetMacroType macro)
focal_class.identifier: findSeat
focal_class.modifiers: private
focal_class.parameters: (SnippetProcessorContext ctx, SnippetMacroType macro)
focal_class.return: SeatBidOrBuilder
focal_class.signature: SeatBidOrBuilder findSeat(SnippetProcessorContext ctx, SnippetMacroType macro)
focal_class.class_method_signature: OpenRtbSnippetProcessor.findImp(SnippetProcessorContext ctx, SnippetMacroType macro)
focal_class.full_signature: protected ImpOrBuilder findImp(SnippetProcessorContext ctx, SnippetMacroType macro)
focal_class.identifier: findImp
focal_class.modifiers: protected
focal_class.parameters: (SnippetProcessorContext ctx, SnippetMacroType macro)
focal_class.return: ImpOrBuilder
focal_class.signature: ImpOrBuilder findImp(SnippetProcessorContext ctx, SnippetMacroType macro)
focal_class.superclass: extends SnippetProcessor
focal_method.body: public void process(SnippetProcessorContext bidCtx) {
      for (SeatBid.Builder seat : bidCtx.response().getSeatbidBuilderList()) {
        for (Bid.Builder bid : seat.getBidBuilderList()) {
          bidCtx.setBid(bid);
          processFields(bidCtx);
        }
      }
    }
focal_method.class_method_signature: OpenRtbSnippetProcessor.process(SnippetProcessorContext bidCtx)
focal_method.full_signature: public void process(SnippetProcessorContext bidCtx)
focal_method.identifier: process
focal_method.invocations: getSeatbidBuilderList response getBidBuilderList setBid processFields
focal_method.modifiers: public
focal_method.parameters: (SnippetProcessorContext bidCtx)
focal_method.return: void
focal_method.signature: void process(SnippetProcessorContext bidCtx)